@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.
23 lines • 1.2 kB
JavaScript
import { useMemo } from 'react';
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js';
import { getConfigItemSets, isFormItemAllowed } from '../utils/item.js';
import { useAvailableChains } from './useAvailableChains.js';
export const useChains = (type, chainTypes) => {
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,
};
};
//# sourceMappingURL=useChains.js.map