@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
JavaScript
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