diff --git a/package.json b/package.json index b3cc11d5bdd..8db735a4808 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "bundle-inpage": "yarn webpack --config src/browser/webpack.config.js && cp InjectedJSBundle.js android/app/src/main/res/raw/injected_js_bundle.js" }, "dependencies": { - "@apollo/client": "3.2.4", "@bankify/react-native-animate-number": "0.2.1", "@bradgarropy/use-countdown": "1.4.1", "@capsizecss/core": "3.0.0", diff --git a/src/apollo/client.ts b/src/apollo/client.ts deleted file mode 100644 index 80c2de588c1..00000000000 --- a/src/apollo/client.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { ApolloClient, ApolloQueryResult, HttpLink, InMemoryCache, QueryOptions } from '@apollo/client'; -import { OperationVariables } from '@apollo/client/core/types'; - -const defaultOptions = { - query: { - errorPolicy: 'all', - fetchPolicy: 'no-cache', - }, - watchQuery: { - errorPolicy: 'ignore', - fetchPolicy: 'no-cache', - }, -}; - -export class ApolloClientWithTimeout extends ApolloClient { - queryWithTimeout( - options: QueryOptions, - timeout: number - ): Promise> { - return new Promise((resolve, reject) => { - const abortController = new AbortController(); - const apolloQuery = this.query({ - ...options, - context: { - fetchOptions: { - signal: abortController.signal, - }, - }, - }); - const id = setTimeout(() => { - abortController.abort(); - reject(); - }, timeout); - return apolloQuery.then( - result => { - clearTimeout(id); - resolve(result); - }, - err => { - clearTimeout(id); - reject(err); - } - ); - }); - } -} - -export const metadataClient = new ApolloClientWithTimeout({ - ...defaultOptions, - cache: new InMemoryCache(), - link: new HttpLink({ - uri: 'https://metadata.p.rainbow.me/v1/graph', - useGETForQueries: true, - }), -}); diff --git a/src/apollo/queries.ts b/src/apollo/queries.ts deleted file mode 100644 index 7baca581937..00000000000 --- a/src/apollo/queries.ts +++ /dev/null @@ -1,9 +0,0 @@ -import gql from 'graphql-tag'; - -export const CONTRACT_FUNCTION = gql` - query contractFunction($chainID: Int!, $hex: String!) { - contractFunction(chainID: $chainID, hex: $hex) { - text - } - } -`; diff --git a/src/handlers/transactions.ts b/src/handlers/transactions.ts index 99998d2a8aa..ad98015446b 100644 --- a/src/handlers/transactions.ts +++ b/src/handlers/transactions.ts @@ -1,8 +1,7 @@ import { Contract } from '@ethersproject/contracts'; import { isEmpty } from 'lodash'; import { web3Provider } from './web3'; -import { metadataClient } from '@/apollo/client'; -import { CONTRACT_FUNCTION } from '@/apollo/queries'; +import { metadataClient } from '@/graphql'; import { RainbowTransaction, TransactionStatus, ZerionTransaction } from '@/entities'; import store from '@/redux/store'; import { transactionSignaturesDataAddNewSignature } from '@/redux/transactionSignatures'; @@ -50,18 +49,13 @@ export const getTransactionMethodName = async (transaction: ZerionTransaction) = let signature = signatures[bytes] || ''; if (signature) return signature; try { - const response = await metadataClient.queryWithTimeout( - { - query: CONTRACT_FUNCTION, - variables: { - chainID: 1, - hex: bytes, - }, - }, - 800 - ); - if (!isEmpty(response?.data?.contractFunction?.text)) { - signature = response.data.contractFunction.text; + const data = await metadataClient.getContractFunction({ + chainID: 1, + hex: bytes, + }); + + if (data.contractFunction && !isEmpty(data?.contractFunction?.text)) { + signature = data.contractFunction.text; } // eslint-disable-next-line no-empty } catch (e) {} diff --git a/src/utils/methodRegistry.ts b/src/utils/methodRegistry.ts index 6e6a6c57d46..082b1b7c39c 100644 --- a/src/utils/methodRegistry.ts +++ b/src/utils/methodRegistry.ts @@ -2,27 +2,20 @@ import { Contract } from '@ethersproject/contracts'; import { web3Provider } from '../handlers/web3'; import namesOverrides from '../references/method-names-overrides.json'; import methodRegistryABI from '../references/method-registry-abi.json'; -import { metadataClient } from '@/apollo/client'; -import { CONTRACT_FUNCTION } from '@/apollo/queries'; +import { metadataClient } from '@/graphql'; const METHOD_REGISTRY_ADDRESS = '0x44691B39d1a75dC4E0A0346CBB15E310e6ED1E86'; export const methodRegistryLookupAndParse = async (methodSignatureBytes: any, chainId: number) => { let signature = ''; - const response = await metadataClient.queryWithTimeout( - { - query: CONTRACT_FUNCTION, - variables: { - chainID: chainId, - hex: methodSignatureBytes, - }, - }, - 800 - ); + const data = await metadataClient.getContractFunction({ + chainID: chainId, + hex: methodSignatureBytes, + }); - if (response?.data?.contractFunction?.text) { - signature = response.data.contractFunction.text; + if (data?.contractFunction?.text) { + signature = data.contractFunction.text; } else { const registry = new Contract(METHOD_REGISTRY_ADDRESS, methodRegistryABI, web3Provider); diff --git a/tsconfig.json b/tsconfig.json index a9b3d6ae501..57d35df4f45 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,8 +13,6 @@ "baseUrl": ".", "paths": { "@/*": ["./src/*"], - "@rainbow-me/apollo": ["./src/apollo"], - "@rainbow-me/apollo/*": ["./src/apollo/*"], "@rainbow-me/assets": ["./src/assets"], "@rainbow-me/config": ["./src/config"], "@rainbow-me/config/*": ["./src/config/*"], diff --git a/yarn.lock b/yarn.lock index 47a7dbc6c10..f3a77481664 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,26 +20,6 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@apollo/client@3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.2.4.tgz#d9a308a900bd9e7053348367f66f3962804ed385" - integrity sha512-lfsxKINoc11+g4NQFyKFuxszc/GlecHrxkJYvx/oWkdpscSU5bm/c+BwI/yvk1/E3yfbR7Afi9XIYrt212xrtA== - dependencies: - "@graphql-typed-document-node/core" "^3.0.0" - "@types/zen-observable" "^0.8.0" - "@wry/context" "^0.5.2" - "@wry/equality" "^0.2.0" - fast-json-stable-stringify "^2.0.0" - graphql-tag "^2.11.0" - hoist-non-react-statics "^3.3.2" - optimism "^0.13.0" - prop-types "^15.7.2" - symbol-observable "^2.0.0" - terser "^5.2.0" - ts-invariant "^0.4.4" - tslib "^1.10.0" - zen-observable "^0.8.14" - "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -2035,7 +2015,7 @@ dependencies: nanoid "^3.3.1" -"@graphql-typed-document-node/core@^3.0.0", "@graphql-typed-document-node/core@^3.1.1": +"@graphql-typed-document-node/core@^3.1.1": version "3.2.0" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== @@ -5104,11 +5084,6 @@ dependencies: "@types/yargs-parser" "*" -"@types/zen-observable@^0.8.0": - version "0.8.7" - resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.7.tgz#114e2ffc8d5be4915fdd5bc90668fc0ceaadb760" - integrity sha512-LKzNTjj+2j09wAo/vvVjzgw5qckJJzhdGgWHW7j69QIGdq/KnZrMAMIHQiWGl3Ccflh5/CudBAntTPYdprPltA== - "@typescript-eslint/eslint-plugin@5.52.0": version "5.52.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz#5fb0d43574c2411f16ea80f5fc335b8eaa7b28a8" @@ -5928,20 +5903,6 @@ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== -"@wry/context@^0.5.2": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.5.4.tgz#b6c28038872e0a0e1ff14eb40b5bf4cab2ab4e06" - integrity sha512-/pktJKHUXDr4D6TJqWgudOPJW2Z+Nb+bqk40jufA3uTkLbnCRKdJPiYDIa/c7mfcPH8Hr6O8zjCERpg5Sq04Zg== - dependencies: - tslib "^1.14.1" - -"@wry/equality@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.2.0.tgz#a312d1b6a682d0909904c2bcd355b02303104fb7" - integrity sha512-Y4d+WH6hs+KZJUC8YKLYGarjGekBrhslDbf/R20oV+AakHPINSitHfDRQz3EGcEWc1luXYNUvMhawWtZVWNGvQ== - dependencies: - tslib "^1.9.3" - "@xmldom/xmldom@0.7.7": version "0.7.7" resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.7.tgz#16bd8a4e5c953018b8168e5d0a7d26b117cd7fa9" @@ -11213,13 +11174,6 @@ graphql-tag@2.11.0: resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd" integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA== -graphql-tag@^2.11.0: - version "2.12.6" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" - integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== - dependencies: - tslib "^2.1.0" - graphql@15.3.0: version "15.3.0" resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.3.0.tgz#3ad2b0caab0d110e3be4a5a9b2aa281e362b5278" @@ -15385,13 +15339,6 @@ opn@^5.4.0: dependencies: is-wsl "^1.1.0" -optimism@^0.13.0: - version "0.13.2" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.13.2.tgz#002a438b69652bfe8f8754a4493ed35c2e9d9821" - integrity sha512-kJkpDUEs/Rp8HsAYYlDzyvQHlT6YZa95P+2GGNR8p/VvsIkt6NilAk7oeTvMRKCq7BeclB7+bmdIexog2859GQ== - dependencies: - "@wry/context" "^0.5.2" - optionator@^0.9.1: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" @@ -18874,11 +18821,6 @@ symbol-observable@^1.2.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== -symbol-observable@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" - integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== - synckit@^0.8.3: version "0.8.8" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" @@ -18976,7 +18918,7 @@ terser-webpack-plugin@^5.3.10: serialize-javascript "^6.0.1" terser "^5.26.0" -terser@5.14.2, terser@^5.15.0, terser@^5.2.0, terser@^5.26.0: +terser@5.14.2, terser@^5.15.0, terser@^5.26.0: version "5.14.2" resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== @@ -19158,13 +19100,6 @@ truncate-utf8-bytes@^1.0.0: dependencies: utf8-byte-length "^1.0.1" -ts-invariant@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" - integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== - dependencies: - tslib "^1.9.3" - ts-jest@29.1.1: version "29.1.1" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" @@ -19242,7 +19177,7 @@ tsconfig-paths@^3.10.1, tsconfig-paths@^3.14.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tslib@1.14.1, tslib@^1.10.0, tslib@^1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -20670,11 +20605,6 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zen-observable@^0.8.14: - version "0.8.15" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== - zod@^1.11.11: version "1.11.17" resolved "https://registry.yarnpkg.com/zod/-/zod-1.11.17.tgz#2aae9e91fc66128116ae9844e8f416a95f453f8e"