UNPKG

@lifi/widget

Version:

LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.

41 lines (37 loc) 1.31 kB
import type { ChainType } from '@lifi/sdk' import { useMemo } from 'react' import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js' import type { FormType } from '../stores/form/types.js' import { getConfigItemSets, isFormItemAllowed } from '../utils/item.js' import { useAvailableChains } from './useAvailableChains.js' export const useChains = (type?: FormType, chainTypes?: ChainType[]) => { const { chains } = useWidgetConfig() const { chains: availableChains, isLoading: isLoadingAvailableChains, getChainById, } = useAvailableChains() const filteredChains = useMemo(() => { const chainsConfigSets = getConfigItemSets( chains, (chains) => new Set(chains), type ) const filteredChains = type ? availableChains?.filter( (chain) => isFormItemAllowed(chain.id, chainsConfigSets, type) && // Check against chain types if they are provided (chainTypes?.includes(chain.chainType) ?? true) ) : availableChains?.filter((chain) => isFormItemAllowed(chain.id, chainsConfigSets) ) return filteredChains }, [availableChains, chainTypes, chains, type]) return { chains: filteredChains, getChainById, isLoading: isLoadingAvailableChains, } }