From 1ca02cb6337007cdcbdeca1a0d1a0c979390ab5e Mon Sep 17 00:00:00 2001 From: Alex Donesky Date: Wed, 22 Sep 2021 10:31:36 -0500 Subject: [PATCH] fix issue where duplicate tokens without icons appear in swap-to token list dropdown (#12148) --- ui/hooks/useTokensToSearch.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ui/hooks/useTokensToSearch.js b/ui/hooks/useTokensToSearch.js index 625af05d3..b211afd2c 100644 --- a/ui/hooks/useTokensToSearch.js +++ b/ui/hooks/useTokensToSearch.js @@ -66,7 +66,8 @@ export function getRenderableTokenData( const usedIconUrl = iconUrl || (tokenList[tokenAddress] && - `images/contract/${tokenList[tokenAddress].iconUrl}`); + `images/contract/${tokenList[tokenAddress].iconUrl}`) || + token?.image; return { ...token, primaryLabel: symbol, @@ -127,7 +128,7 @@ export function useTokensToSearch({ const memoizedTokensToSearch = useEqualityCheck(tokensToSearch); return useMemo(() => { const usersTokensAddressMap = memoizedUsersToken.reduce( - (acc, token) => ({ ...acc, [token.address]: token }), + (acc, token) => ({ ...acc, [token.address.toLowerCase()]: token }), {}, ); @@ -139,12 +140,12 @@ export function useTokensToSearch({ const memoizedSwapsAndUserTokensWithoutDuplicities = uniqBy( [...memoizedTokensToSearch, ...memoizedUsersToken], - 'address', + (token) => token.address.toLowerCase(), ); memoizedSwapsAndUserTokensWithoutDuplicities.forEach((token) => { const renderableDataToken = getRenderableTokenData( - { ...usersTokensAddressMap[token.address], ...token }, + { ...usersTokensAddressMap[token.address.toLowerCase()], ...token }, tokenConversionRates, conversionRate, currentCurrency, @@ -154,12 +155,12 @@ export function useTokensToSearch({ ); if ( isSwapsDefaultTokenSymbol(renderableDataToken.symbol, chainId) || - usersTokensAddressMap[token.address] + usersTokensAddressMap[token.address.toLowerCase()] ) { tokensToSearchBuckets.owned.push(renderableDataToken); - } else if (memoizedTopTokens[token.address]) { + } else if (memoizedTopTokens[token.address.toLowerCase()]) { tokensToSearchBuckets.top[ - memoizedTopTokens[token.address].index + memoizedTopTokens[token.address.toLowerCase()].index ] = renderableDataToken; } else { tokensToSearchBuckets.others.push(renderableDataToken);