UNPKG

@nazabalm/widget

Version:

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

51 lines 2.21 kB
import { getToken } from '@lifi/sdk'; import { useQuery, useQueryClient } from '@tanstack/react-query'; import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'; import { getQueryKey } from '../utils/queries.js'; export const useTokenSearch = (chainId, tokenQuery, enabled, formType) => { const queryClient = useQueryClient(); const { tokens: configTokens, keyPrefix } = useWidgetConfig(); const { data, isLoading } = useQuery({ queryKey: [ getQueryKey('token-search', keyPrefix), chainId, tokenQuery, ...(formType ? [formType] : []), ], queryFn: async ({ queryKey: [, chainId, tokenQuery, formType], signal, }) => { const token = await getToken(chainId, tokenQuery, { signal, }); if (token) { // Check if the token is in the denied list for the current form type const formTypeConfig = formType ? configTokens?.[formType] : undefined; const globalConfig = configTokens; const deniedTokenAddressesSet = new Set([...(formTypeConfig?.deny || []), ...(globalConfig?.deny || [])] .filter((t) => t.chainId === chainId) .map((t) => t.address)); // If the token is in the denied list, return null if (deniedTokenAddressesSet.has(token.address)) { return undefined; } queryClient.setQueriesData({ queryKey: [getQueryKey('tokens', keyPrefix)] }, (data) => { if (data && !data.tokens[chainId]?.some((t) => t.address === token.address)) { const clonedData = { ...data }; clonedData.tokens[chainId]?.push(token); return clonedData; } }); } return token; }, enabled: Boolean(chainId && tokenQuery && enabled), retry: false, }); return { token: data, isLoading, }; }; //# sourceMappingURL=useTokenSearch.js.map