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.

35 lines 1.66 kB
import { getTools } from '@lifi/sdk'; import { useQuery } from '@tanstack/react-query'; import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'; import { settingsStore } from '../stores/settings/useSettingsStore.js'; import { getConfigItemSets, isItemAllowedForSets } from '../utils/item.js'; import { getQueryKey } from '../utils/queries.js'; export const useTools = () => { const { bridges, exchanges, keyPrefix } = useWidgetConfig(); const { data } = useQuery({ queryKey: [ getQueryKey('tools', keyPrefix), bridges?.allow, bridges?.deny, exchanges?.allow, exchanges?.deny, ], queryFn: async () => { const tools = await getTools(); const bridgesConfigSets = getConfigItemSets(bridges, (bridges) => new Set(bridges)); const exchangesConfigSets = getConfigItemSets(exchanges, (exchanges) => new Set(exchanges)); const result = { bridges: tools.bridges.filter((bridge) => isItemAllowedForSets(bridge.key, bridgesConfigSets)), exchanges: tools.exchanges.filter((exchange) => isItemAllowedForSets(exchange.key, exchangesConfigSets)), }; const { initializeTools } = settingsStore.getState(); initializeTools('Bridges', result.bridges.map((bridge) => bridge.key)); initializeTools('Exchanges', result.exchanges.map((exchange) => exchange.key)); return result; }, refetchInterval: 180000, staleTime: 180000, }); return { tools: data }; }; //# sourceMappingURL=useTools.js.map