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 2.18 kB
import { useMemo } from 'react'; import { useFromTokenSufficiency } from '../../hooks/useFromTokenSufficiency.js'; import { useGasSufficiency } from '../../hooks/useGasSufficiency.js'; import { useIsCompatibleDestinationAccount } from '../../hooks/useIsCompatibleDestinationAccount.js'; import { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js'; export const useMessageQueue = (route, allowInteraction) => { const { requiredToAddress, toAddress } = useToAddressRequirements(route); const { isCompatibleDestinationAccount, isLoading: isCompatibleDestinationAccountLoading, } = useIsCompatibleDestinationAccount(route); const { insufficientFromToken, isLoading: isFromTokenSufficiencyLoading } = useFromTokenSufficiency(route); const { insufficientGas, isLoading: isGasSufficiencyLoading } = useGasSufficiency(route); const messageQueue = useMemo(() => { const queue = []; if (insufficientFromToken) { queue.push({ id: 'INSUFFICIENT_FUNDS', priority: 1, }); } if (insufficientGas?.length) { queue.push({ id: 'INSUFFICIENT_GAS', priority: 2, props: { insufficientGas }, }); } if (!isCompatibleDestinationAccount && !allowInteraction) { queue.push({ id: 'ACCOUNT_NOT_DEPLOYED', priority: 3, }); } if (requiredToAddress && !toAddress) { queue.push({ id: 'TO_ADDRESS_REQUIRED', priority: 4, }); } return queue.sort((a, b) => a.priority - b.priority); }, [ allowInteraction, insufficientFromToken, insufficientGas, isCompatibleDestinationAccount, requiredToAddress, toAddress, ]); return { messages: messageQueue, hasMessages: messageQueue.length > 0, isLoading: isGasSufficiencyLoading || isFromTokenSufficiencyLoading || isCompatibleDestinationAccountLoading, }; }; //# sourceMappingURL=useMessageQueue.js.map