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.

55 lines (49 loc) 1.54 kB
import { type ChainId, getGasRecommendation } from '@lifi/sdk' import { useQuery } from '@tanstack/react-query' import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js' import { getQueryKey } from '../utils/queries.js' import { useAvailableChains } from './useAvailableChains.js' const refetchInterval = 60_000 export const useGasRecommendation = ( toChainId?: ChainId, fromChain?: ChainId, fromToken?: string ) => { const { chains } = useAvailableChains() const { keyPrefix } = useWidgetConfig() const checkRecommendationLiFuel = Boolean(toChainId) && Boolean(fromChain) && Boolean(fromToken) && Boolean(chains?.length) const checkRecommendationMaxButton = Boolean(toChainId) && !fromChain && !fromToken && Boolean(chains?.length) return useQuery({ queryKey: [ getQueryKey('gas-recommendation', keyPrefix), toChainId, fromChain, fromToken, ], queryFn: async ({ queryKey: [_, toChainId, fromChain, fromToken], signal, }) => { if (!chains?.some((chain) => chain.id === toChainId)) { return null } const gasRecommendation = await getGasRecommendation( { chainId: toChainId as ChainId, fromChain: fromChain as ChainId, fromToken: fromToken as string, }, { signal } ) return gasRecommendation }, enabled: checkRecommendationLiFuel || checkRecommendationMaxButton, refetchInterval, staleTime: refetchInterval, }) }