From c0c44495f6bd3b59a36bcdfec4f648942b50fa8c Mon Sep 17 00:00:00 2001 From: Agustin Pane Date: Tue, 6 Oct 2020 10:54:29 -0300 Subject: [PATCH 1/7] Replaces getRelayUrl with getTxServiceUrl --- src/logic/tokens/api/fetchToken.ts | 16 ---------------- src/logic/tokens/api/fetchTokenList.ts | 5 +++-- src/logic/tokens/api/index.ts | 1 - 3 files changed, 3 insertions(+), 19 deletions(-) delete mode 100644 src/logic/tokens/api/fetchToken.ts diff --git a/src/logic/tokens/api/fetchToken.ts b/src/logic/tokens/api/fetchToken.ts deleted file mode 100644 index 7584521ecd..0000000000 --- a/src/logic/tokens/api/fetchToken.ts +++ /dev/null @@ -1,16 +0,0 @@ -import axios from 'axios' - -import { getRelayUrl } from 'src/config/index' - -const fetchToken = (tokenAddress) => { - const apiUrl = getRelayUrl() - const url = `${apiUrl}/tokens/` - - return axios.get(url, { - params: { - address: tokenAddress, - }, - }) -} - -export default fetchToken diff --git a/src/logic/tokens/api/fetchTokenList.ts b/src/logic/tokens/api/fetchTokenList.ts index dd9054b039..e2381c96f2 100644 --- a/src/logic/tokens/api/fetchTokenList.ts +++ b/src/logic/tokens/api/fetchTokenList.ts @@ -1,9 +1,10 @@ import axios from 'axios' -import { getRelayUrl } from 'src/config/index' +import { getTxServiceUrl } from 'src/config/index' const fetchTokenList = () => { - const apiUrl = getRelayUrl() + const apiUrl = getTxServiceUrl() + const url = `${apiUrl}tokens/` return axios.get(url, { diff --git a/src/logic/tokens/api/index.ts b/src/logic/tokens/api/index.ts index 7ff3aa7de3..e63e17bdab 100644 --- a/src/logic/tokens/api/index.ts +++ b/src/logic/tokens/api/index.ts @@ -1,2 +1 @@ export { default as fetchTokenList } from './fetchTokenList' -export { default as fetchToken } from './fetchToken' From b7ac7f316cbd6e089c3f3f1bbc9bf3c83f2fc55a Mon Sep 17 00:00:00 2001 From: Agustin Pane Date: Wed, 7 Oct 2020 09:54:33 -0300 Subject: [PATCH 2/7] Filter erc721 collectibles when fetching tokens --- src/logic/tokens/store/actions/fetchTokens.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/logic/tokens/store/actions/fetchTokens.ts b/src/logic/tokens/store/actions/fetchTokens.ts index 5c5bde4959..97fb66d7ae 100644 --- a/src/logic/tokens/store/actions/fetchTokens.ts +++ b/src/logic/tokens/store/actions/fetchTokens.ts @@ -100,11 +100,13 @@ export const fetchTokens = () => async ( data: { results: tokenList }, } = await fetchTokenList() - if (currentSavedTokens && currentSavedTokens.size === tokenList.length) { + const erc20Tokens = tokenList.filter((token) => token.type.toLowerCase() === 'erc20') + + if (currentSavedTokens && currentSavedTokens.size === erc20Tokens.length) { return } - const tokens = List(tokenList.map((token) => makeToken(token))) + const tokens = List(erc20Tokens.map((token) => makeToken(token))) dispatch(saveTokens(tokens)) } catch (err) { From 92f58ed81aad9a36868d1088f1b328e5534e6fb6 Mon Sep 17 00:00:00 2001 From: Agustin Pane Date: Wed, 7 Oct 2020 09:57:40 -0300 Subject: [PATCH 3/7] Renames fetchTokenList to fetchErc20AndErc721AssetsList --- .../{fetchTokenList.ts => fetchErc20AndErc721AssetsList.ts} | 4 ++-- src/logic/tokens/api/index.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/logic/tokens/api/{fetchTokenList.ts => fetchErc20AndErc721AssetsList.ts} (71%) diff --git a/src/logic/tokens/api/fetchTokenList.ts b/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts similarity index 71% rename from src/logic/tokens/api/fetchTokenList.ts rename to src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts index e2381c96f2..8bca21bcf1 100644 --- a/src/logic/tokens/api/fetchTokenList.ts +++ b/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts @@ -2,7 +2,7 @@ import axios from 'axios' import { getTxServiceUrl } from 'src/config/index' -const fetchTokenList = () => { +const fetchErc20AndErc721AssetsList = () => { const apiUrl = getTxServiceUrl() const url = `${apiUrl}tokens/` @@ -14,4 +14,4 @@ const fetchTokenList = () => { }) } -export default fetchTokenList +export default fetchErc20AndErc721AssetsList diff --git a/src/logic/tokens/api/index.ts b/src/logic/tokens/api/index.ts index e63e17bdab..6dfb297c81 100644 --- a/src/logic/tokens/api/index.ts +++ b/src/logic/tokens/api/index.ts @@ -1 +1 @@ -export { default as fetchTokenList } from './fetchTokenList' +export { default as fetchTokenList } from './fetchErc20AndErc721AssetsList' From bb1de622fbfe4441bfd68d13965aad11f5bbe66c Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Thu, 8 Oct 2020 14:06:35 +0200 Subject: [PATCH 4/7] Fix routes starting by / --- src/config/index.ts | 8 ++++---- src/config/networks/local.ts | 8 ++++---- src/config/networks/mainnet.ts | 14 +++++++------- src/config/networks/rinkeby.ts | 12 ++++++------ src/config/networks/xdai.ts | 8 ++++---- .../__tests__/fetchSafeTokens.test.ts | 4 +--- .../api/fetchTokenCurrenciesBalances.ts | 8 ++------ .../actions/allTransactions/loadAllTransactions.ts | 2 +- src/logic/safe/transactions/incomingTxHistory.ts | 2 +- src/logic/safe/transactions/txHistory.ts | 2 +- .../tokens/api/fetchErc20AndErc721AssetsList.ts | 2 +- src/logic/tokens/api/fetchTokenBalanceList.ts | 8 ++------ 12 files changed, 34 insertions(+), 44 deletions(-) diff --git a/src/config/index.ts b/src/config/index.ts index ec5c367d34..26be95a074 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -78,13 +78,13 @@ export const getNetworkConfigFeatures = (): SafeFeatures | undefined => getConfi export const getNetworkInfo = (): NetworkSettings => getConfig()?.network -export const getTxServiceUriFrom = (safeAddress: string) => `safes/${safeAddress}/transactions/` +export const getTxServiceUriFrom = (safeAddress: string) => `/safes/${safeAddress}/transactions/` -export const getIncomingTxServiceUriTo = (safeAddress: string) => `safes/${safeAddress}/incoming-transfers/` +export const getIncomingTxServiceUriTo = (safeAddress: string) => `/safes/${safeAddress}/incoming-transfers/` -export const getAllTransactionsUriFrom = (safeAddress: string) => `safes/${safeAddress}/all-transactions/` +export const getAllTransactionsUriFrom = (safeAddress: string) => `/safes/${safeAddress}/all-transactions/` -export const getSafeCreationTxUri = (safeAddress: string) => `safes/${safeAddress}/creation/` +export const getSafeCreationTxUri = (safeAddress: string) => `/safes/${safeAddress}/creation/` export const getGoogleAnalyticsTrackingID = (): string => GOOGLE_ANALYTICS_ID[getNetworkName()] diff --git a/src/config/networks/local.ts b/src/config/networks/local.ts index 195e315e38..dec9140784 100644 --- a/src/config/networks/local.ts +++ b/src/config/networks/local.ts @@ -2,13 +2,13 @@ import EtherLogo from 'src/assets/icons/icon_etherTokens.svg' import { EnvironmentSettings, ETHEREUM_NETWORK, NetworkConfig } from 'src/config/networks/network.d' const baseConfig: EnvironmentSettings = { - txServiceUrl: 'http://localhost:8000/api/v1/', + txServiceUrl: 'http://localhost:8000/api/v1', relayApiUrl: 'https://safe-relay.staging.gnosisdev.com/api/v1', - safeAppsUrl: 'http://localhost:3002/', + safeAppsUrl: 'http://localhost:3002', gasPriceOracleUrl: 'https://ethgasstation.info/json/ethgasAPI.json', - rpcServiceUrl: 'http://localhost:4447/', + rpcServiceUrl: 'http://localhost:4447', networkExplorerName: 'Etherscan', - networkExplorerUrl: 'https://rinkeby.etherscan.io/', + networkExplorerUrl: 'https://rinkeby.etherscan.io', networkExplorerApiUrl: 'https://api-rinkeby.etherscan.io/api', } diff --git a/src/config/networks/mainnet.ts b/src/config/networks/mainnet.ts index 7635ada83e..6571e1583f 100644 --- a/src/config/networks/mainnet.ts +++ b/src/config/networks/mainnet.ts @@ -2,12 +2,12 @@ import EtherLogo from 'src/assets/icons/icon_etherTokens.svg' import { EnvironmentSettings, ETHEREUM_NETWORK, NetworkConfig } from 'src/config/networks/network.d' const baseConfig: EnvironmentSettings = { - txServiceUrl: 'https://safe-transaction.mainnet.staging.gnosisdev.com/api/v1/', - safeAppsUrl: 'https://safe-apps.dev.gnosisdev.com/', + txServiceUrl: 'https://safe-transaction.mainnet.staging.gnosisdev.com/api/v1', + safeAppsUrl: 'https://safe-apps.dev.gnosisdev.com', gasPriceOracleUrl: 'https://ethgasstation.info/json/ethgasAPI.json', - rpcServiceUrl: 'https://mainnet.infura.io:443/v3/', + rpcServiceUrl: 'https://mainnet.infura.io:443/v3', networkExplorerName: 'Etherscan', - networkExplorerUrl: 'https://etherscan.io/', + networkExplorerUrl: 'https://etherscan.io', networkExplorerApiUrl: 'https://api.etherscan.io/api', } @@ -18,12 +18,12 @@ const mainnet: NetworkConfig = { }, staging: { ...baseConfig, - safeAppsUrl: 'https://safe-apps.staging.gnosisdev.com/', + safeAppsUrl: 'https://safe-apps.staging.gnosisdev.com', }, production: { ...baseConfig, - txServiceUrl: 'https://safe-transaction.mainnet.gnosis.io/api/v1/', - safeAppsUrl: 'https://apps.gnosis-safe.io/', + txServiceUrl: 'https://safe-transaction.mainnet.gnosis.io/api/v1', + safeAppsUrl: 'https://apps.gnosis-safe.io', }, }, network: { diff --git a/src/config/networks/rinkeby.ts b/src/config/networks/rinkeby.ts index 7a6d78325f..4da2762194 100644 --- a/src/config/networks/rinkeby.ts +++ b/src/config/networks/rinkeby.ts @@ -2,12 +2,12 @@ import EtherLogo from 'src/assets/icons/icon_etherTokens.svg' import { EnvironmentSettings, ETHEREUM_NETWORK, NetworkConfig } from 'src/config/networks/network.d' const baseConfig: EnvironmentSettings = { - txServiceUrl: 'https://safe-transaction.staging.gnosisdev.com/api/v1/', - safeAppsUrl: 'https://safe-apps.dev.gnosisdev.com/', + txServiceUrl: 'https://safe-transaction.staging.gnosisdev.com/api/v1', + safeAppsUrl: 'https://safe-apps.dev.gnosisdev.com', gasPriceOracleUrl: 'https://ethgasstation.info/json/ethgasAPI.json', - rpcServiceUrl: 'https://rinkeby.infura.io:443/v3/', + rpcServiceUrl: 'https://rinkeby.infura.io:443/v3', networkExplorerName: 'Etherscan', - networkExplorerUrl: 'https://rinkeby.etherscan.io/', + networkExplorerUrl: 'https://rinkeby.etherscan.io', networkExplorerApiUrl: 'https://api-rinkeby.etherscan.io/api', } @@ -22,8 +22,8 @@ const rinkeby: NetworkConfig = { }, production: { ...baseConfig, - txServiceUrl: 'https://safe-transaction.rinkeby.gnosis.io/api/v1/', - safeAppsUrl: 'https://apps.gnosis-safe.io/', + txServiceUrl: 'https://safe-transaction.rinkeby.gnosis.io/api/v1', + safeAppsUrl: 'https://apps.gnosis-safe.io', }, }, network: { diff --git a/src/config/networks/xdai.ts b/src/config/networks/xdai.ts index d3a29a93e9..78cba3b3b2 100644 --- a/src/config/networks/xdai.ts +++ b/src/config/networks/xdai.ts @@ -3,12 +3,12 @@ import { ETHEREUM_NETWORK, NetworkConfig } from 'src/config/networks/network.d' const xDai: NetworkConfig = { environment: { production: { - txServiceUrl: 'https://safe-transaction.xdai.gnosis.io/api/v1/', - safeAppsUrl: 'https://apps.gnosis-safe.io/', + txServiceUrl: 'https://safe-transaction.xdai.gnosis.io/api/v1', + safeAppsUrl: 'https://apps.gnosis-safe.io', gasPrice: 1e9, - rpcServiceUrl: 'https://rpc.xdaichain.com/', + rpcServiceUrl: 'https://rpc.xdaichain.com', networkExplorerName: 'Blockscout', - networkExplorerUrl: 'https://blockscout.com/poa/xdai/', + networkExplorerUrl: 'https://blockscout.com/poa/xdai', networkExplorerApiUrl: 'https://blockscout.com/poa/xdai/api', }, }, diff --git a/src/logic/currencyValues/__tests__/fetchSafeTokens.test.ts b/src/logic/currencyValues/__tests__/fetchSafeTokens.test.ts index 7d9f35d0e4..2afecf0cfc 100644 --- a/src/logic/currencyValues/__tests__/fetchSafeTokens.test.ts +++ b/src/logic/currencyValues/__tests__/fetchSafeTokens.test.ts @@ -49,8 +49,6 @@ describe('fetchTokenCurrenciesBalances', () => { // then expect(result).toStrictEqual(expectedResult) expect(axios.get).toHaveBeenCalled() - expect(axios.get).toBeCalledWith(`${apiUrl}safes/${safeAddress}/balances/usd/?exclude_spam=${excludeSpamTokens}`, { - params: { limit: 3000 }, - }) + expect(axios.get).toBeCalledWith(`${apiUrl}/safes/${safeAddress}/balances/usd/?exclude_spam=${excludeSpamTokens}`) }) }) diff --git a/src/logic/currencyValues/api/fetchTokenCurrenciesBalances.ts b/src/logic/currencyValues/api/fetchTokenCurrenciesBalances.ts index 28eba7e05d..06c290dc8d 100644 --- a/src/logic/currencyValues/api/fetchTokenCurrenciesBalances.ts +++ b/src/logic/currencyValues/api/fetchTokenCurrenciesBalances.ts @@ -16,13 +16,9 @@ const fetchTokenCurrenciesBalances = ( excludeSpamTokens = true, ): Promise> => { const apiUrl = getTxServiceUrl() - const url = `${apiUrl}safes/${safeAddress}/balances/usd/?exclude_spam=${excludeSpamTokens}` + const url = `${apiUrl}/safes/${safeAddress}/balances/usd/?exclude_spam=${excludeSpamTokens}` - return axios.get(url, { - params: { - limit: 3000, - }, - }) + return axios.get(url) } export default fetchTokenCurrenciesBalances diff --git a/src/logic/safe/store/actions/allTransactions/loadAllTransactions.ts b/src/logic/safe/store/actions/allTransactions/loadAllTransactions.ts index 6265ff024e..b06c9ba13f 100644 --- a/src/logic/safe/store/actions/allTransactions/loadAllTransactions.ts +++ b/src/logic/safe/store/actions/allTransactions/loadAllTransactions.ts @@ -25,7 +25,7 @@ const getAllTransactionsUri = (safeAddress: string): string => { const address = checksumAddress(safeAddress) const base = getAllTransactionsUriFrom(address) - return `${host}${base}` + return `${host}/${base}` } const fetchAllTransactions = async ( diff --git a/src/logic/safe/transactions/incomingTxHistory.ts b/src/logic/safe/transactions/incomingTxHistory.ts index e4597eb067..8eec0f6f10 100644 --- a/src/logic/safe/transactions/incomingTxHistory.ts +++ b/src/logic/safe/transactions/incomingTxHistory.ts @@ -6,5 +6,5 @@ export const buildIncomingTxServiceUrl = (safeAddress: string): string => { const address = checksumAddress(safeAddress) const base = getIncomingTxServiceUriTo(address) - return `${host}${base}` + return `${host}/${base}` } diff --git a/src/logic/safe/transactions/txHistory.ts b/src/logic/safe/transactions/txHistory.ts index b12300d2eb..ea787b17ee 100644 --- a/src/logic/safe/transactions/txHistory.ts +++ b/src/logic/safe/transactions/txHistory.ts @@ -48,7 +48,7 @@ export const buildTxServiceUrl = (safeAddress: string): string => { const host = getTxServiceUrl() const address = checksumAddress(safeAddress) const base = getTxServiceUriFrom(address) - return `${host}${base}?has_confirmations=True` + return `${host}/${base}?has_confirmations=True` } const SUCCESS_STATUS = 201 // CREATED status diff --git a/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts b/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts index 8bca21bcf1..8005589595 100644 --- a/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts +++ b/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts @@ -5,7 +5,7 @@ import { getTxServiceUrl } from 'src/config/index' const fetchErc20AndErc721AssetsList = () => { const apiUrl = getTxServiceUrl() - const url = `${apiUrl}tokens/` + const url = `${apiUrl}/tokens/` return axios.get(url, { params: { diff --git a/src/logic/tokens/api/fetchTokenBalanceList.ts b/src/logic/tokens/api/fetchTokenBalanceList.ts index 91bdc399df..6712a09eaf 100644 --- a/src/logic/tokens/api/fetchTokenBalanceList.ts +++ b/src/logic/tokens/api/fetchTokenBalanceList.ts @@ -4,13 +4,9 @@ import { getTxServiceUrl } from 'src/config/index' const fetchTokenBalanceList = (safeAddress) => { const apiUrl = getTxServiceUrl() - const url = `${apiUrl}safes/${safeAddress}/balances/` + const url = `${apiUrl}/safes/${safeAddress}/balances/` - return axios.get(url, { - params: { - limit: 3000, - }, - }) + return axios.get(url) } export default fetchTokenBalanceList From a425163abe4d4dedd203d2bc1b98034dc900b0c7 Mon Sep 17 00:00:00 2001 From: Agustin Pane Date: Thu, 8 Oct 2020 15:16:58 -0300 Subject: [PATCH 5/7] Removes default export --- src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts | 4 +--- src/logic/tokens/api/index.ts | 2 +- src/logic/tokens/store/actions/fetchTokens.ts | 4 ++-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts b/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts index 8005589595..f5315f4840 100644 --- a/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts +++ b/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts @@ -2,7 +2,7 @@ import axios from 'axios' import { getTxServiceUrl } from 'src/config/index' -const fetchErc20AndErc721AssetsList = () => { +export const fetchErc20AndErc721AssetsList = () => { const apiUrl = getTxServiceUrl() const url = `${apiUrl}/tokens/` @@ -13,5 +13,3 @@ const fetchErc20AndErc721AssetsList = () => { }, }) } - -export default fetchErc20AndErc721AssetsList diff --git a/src/logic/tokens/api/index.ts b/src/logic/tokens/api/index.ts index 6dfb297c81..408b30b38e 100644 --- a/src/logic/tokens/api/index.ts +++ b/src/logic/tokens/api/index.ts @@ -1 +1 @@ -export { default as fetchTokenList } from './fetchErc20AndErc721AssetsList' +export { fetchErc20AndErc721AssetsList } from './fetchErc20AndErc721AssetsList' diff --git a/src/logic/tokens/store/actions/fetchTokens.ts b/src/logic/tokens/store/actions/fetchTokens.ts index 97fb66d7ae..aa569400e1 100644 --- a/src/logic/tokens/store/actions/fetchTokens.ts +++ b/src/logic/tokens/store/actions/fetchTokens.ts @@ -8,7 +8,7 @@ import contract from 'truffle-contract' import saveTokens from './saveTokens' import generateBatchRequests from 'src/logic/contracts/generateBatchRequests' -import { fetchTokenList } from 'src/logic/tokens/api' +import { fetchErc20AndErc721AssetsList } from 'src/logic/tokens/api' import { makeToken, Token } from 'src/logic/tokens/store/model/token' import { tokensSelector } from 'src/logic/tokens/store/selectors' import { getWeb3 } from 'src/logic/wallets/getWeb3' @@ -98,7 +98,7 @@ export const fetchTokens = () => async ( const { data: { results: tokenList }, - } = await fetchTokenList() + } = await fetchErc20AndErc721AssetsList() const erc20Tokens = tokenList.filter((token) => token.type.toLowerCase() === 'erc20') From d305eb4419b5c08e4ca6858f8d529e03f5a96cc2 Mon Sep 17 00:00:00 2001 From: Agustin Pane Date: Thu, 8 Oct 2020 15:29:15 -0300 Subject: [PATCH 6/7] Type fetchErc20AndErc721AssetsList --- .../tokens/api/fetchErc20AndErc721AssetsList.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts b/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts index f5315f4840..b7874b643a 100644 --- a/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts +++ b/src/logic/tokens/api/fetchErc20AndErc721AssetsList.ts @@ -1,13 +1,22 @@ -import axios from 'axios' +import axios, { AxiosResponse } from 'axios' import { getTxServiceUrl } from 'src/config/index' -export const fetchErc20AndErc721AssetsList = () => { +type TokenResult = { + address: string + decimals?: number + logoUri: string + name: string + symbol: string + type: string +} + +export const fetchErc20AndErc721AssetsList = async (): Promise> => { const apiUrl = getTxServiceUrl() const url = `${apiUrl}/tokens/` - return axios.get(url, { + return axios.get<{ results: TokenResult[] }>(url, { params: { limit: 3000, }, From a2337859ece2ca6ad53290b4f97ea67ef07953f8 Mon Sep 17 00:00:00 2001 From: Agustin Pane Date: Thu, 8 Oct 2020 15:30:35 -0300 Subject: [PATCH 7/7] Optional parameter --- src/logic/tokens/store/actions/fetchTokens.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logic/tokens/store/actions/fetchTokens.ts b/src/logic/tokens/store/actions/fetchTokens.ts index aa569400e1..6bccf77034 100644 --- a/src/logic/tokens/store/actions/fetchTokens.ts +++ b/src/logic/tokens/store/actions/fetchTokens.ts @@ -102,7 +102,7 @@ export const fetchTokens = () => async ( const erc20Tokens = tokenList.filter((token) => token.type.toLowerCase() === 'erc20') - if (currentSavedTokens && currentSavedTokens.size === erc20Tokens.length) { + if (currentSavedTokens?.size === erc20Tokens.length) { return }