From e232d449f7e009f5b5b2afb69fec09c01a079649 Mon Sep 17 00:00:00 2001 From: Anirudha Bose Date: Tue, 9 Nov 2021 05:16:18 +0530 Subject: [PATCH] feat(wallet): allow swapping custom tokens --- .../brave_wallet_ui/common/hooks/assets.ts | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/components/brave_wallet_ui/common/hooks/assets.ts b/components/brave_wallet_ui/common/hooks/assets.ts index 879b18992a1..3542c1a0a6c 100644 --- a/components/brave_wallet_ui/common/hooks/assets.ts +++ b/components/brave_wallet_ui/common/hooks/assets.ts @@ -26,6 +26,26 @@ export default function useAssets ( [fullTokenList] ) + const userVisibleTokenOptions: TokenInfo[] = React.useMemo( + () => + userVisibleTokensInfo.map((token) => ({ + ...token, + logo: `chrome://erc-token-images/${token.logo}` + })), + [userVisibleTokensInfo] + ) + + const sendAssetOptions: AccountAssetOptionType[] = React.useMemo( + () => + userVisibleTokenOptions + .map((token) => ({ + asset: token, + assetBalance: '0', + fiatBalance: '0' + })), + [userVisibleTokenOptions] + ) + const assetOptions: AccountAssetOptionType[] = React.useMemo(() => { const assets = tokenOptions .map((token) => ({ @@ -36,31 +56,17 @@ export default function useAssets ( return [ ETH, + ...assets.filter((asset) => asset.asset.symbol === 'BAT'), - ...assets.filter((asset) => asset.asset.symbol !== 'BAT') + + ...sendAssetOptions + .filter(asset => !['BAT', 'ETH'].includes(asset.asset.symbol)), + + ...assets + .filter(asset => !['BAT', 'ETH'].includes(asset.asset.symbol)) + .filter(asset => !sendAssetOptions.some(token => token.asset.symbol === asset.asset.symbol)) ] - }, [tokenOptions]) - - const userVisibleTokenOptions: TokenInfo[] = React.useMemo( - () => - userVisibleTokensInfo.map((token) => ({ - ...token, - logo: `chrome://erc-token-images/${token.logo}` - })), - [userVisibleTokensInfo] - ) - - const sendAssetOptions: AccountAssetOptionType[] = React.useMemo(() => { - const assets = userVisibleTokenOptions - .map((token) => ({ - asset: token, - assetBalance: '0', - fiatBalance: '0' - })) - return assets - }, - [userVisibleTokenOptions] - ) + }, [tokenOptions, sendAssetOptions]) return { tokenOptions,