UNPKG

@reservoir0x/relay-kit-ui

Version:

Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.

80 lines 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useEnhancedTokensList = void 0; const react_1 = require("react"); const index_js_1 = require("../hooks/index.js"); const useEnhancedTokensList = (tokenLists, balanceMap, context, multiWalletSupportEnabled, chainId, sortByBalance = true) => { const { chains } = (0, index_js_1.useInternalRelayChains)(); const chainCurrencyMap = (0, react_1.useMemo)(() => { if (!chains) return new Map(); return new Map(chains .filter((chain) => chain?.currency?.address) .map((chain) => [ `${chain.id}:${chain.currency?.address?.toLowerCase()}`, true ])); }, [chains]); return (0, react_1.useMemo)(() => { if (!tokenLists) return []; const enhancedTokens = tokenLists .map((currency) => { if (typeof currency?.chainId !== 'number' || !currency?.address || !currency?.symbol || !currency?.name || typeof currency?.decimals !== 'number') { return null; } const chain = chains?.find((c) => c.id === currency.chainId); const enhancedToken = { chainId: currency.chainId, address: currency.address, symbol: currency.symbol, name: currency.name, decimals: currency.decimals, logoURI: currency.metadata?.logoURI ?? '', verified: currency.metadata?.verified ?? false, vmType: currency.vmType, balance: balanceMap?.[`${currency.chainId}:${currency.address}`], isGasCurrency: currency.chainId !== 1337 && chainCurrencyMap.has(`${currency.chainId}:${currency.address.toLowerCase()}`), chain }; return enhancedToken; }) .filter((token) => token !== null) .filter((token, index, self) => index === self.findIndex((t) => t.chainId === token.chainId && t.address.toLowerCase() === token.address.toLowerCase())) .filter((token) => !chainId || token.chainId === chainId) .filter((token) => { if (context === 'from' && !multiWalletSupportEnabled) { return token.vmType === 'evm'; } return true; }) .sort((a, b) => { if (sortByBalance) { const aValueUsd = a.balance?.value_usd ?? 0; const bValueUsd = b.balance?.value_usd ?? 0; if (aValueUsd !== bValueUsd) { return bValueUsd - aValueUsd; } } return 0; }); return enhancedTokens; }, [ tokenLists, balanceMap, context, multiWalletSupportEnabled, chainId, chainCurrencyMap, sortByBalance ]); }; exports.useEnhancedTokensList = useEnhancedTokensList; //# sourceMappingURL=useEnhancedTokensList.js.map