@reservoir0x/relay-kit-ui
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
80 lines • 3.14 kB
JavaScript
;
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