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.

53 lines 2.07 kB
import { ChainType } from '@lifi/sdk'; import { useContext, useMemo } from 'react'; import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'; import { EVMExternalContext } from './EVMExternalContext.js'; import { SuiExternalContext } from './SuiExternalContext.js'; import { SVMExternalContext } from './SVMExternalContext.js'; import { UTXOExternalContext } from './UTXOExternalContext.js'; const internalChainTypes = [ ChainType.EVM, ChainType.SVM, ChainType.UTXO, ChainType.MVM, ]; export function useExternalWalletProvider() { const { walletConfig } = useWidgetConfig(); const hasExternalEVMContext = useContext(EVMExternalContext); const hasExternalSVMContext = useContext(SVMExternalContext); const hasExternalUTXOContext = useContext(UTXOExternalContext); const hasExternalSuiContext = useContext(SuiExternalContext); const data = useMemo(() => { const providers = []; if (hasExternalEVMContext) { providers.push(ChainType.EVM); } if (hasExternalSVMContext) { providers.push(ChainType.SVM); } if (hasExternalUTXOContext) { providers.push(ChainType.UTXO); } if (hasExternalSuiContext) { providers.push(ChainType.MVM); } const hasExternalProvider = hasExternalEVMContext || hasExternalSVMContext || hasExternalUTXOContext || hasExternalSuiContext; const useExternalWalletProvidersOnly = hasExternalProvider && !walletConfig?.usePartialWalletManagement; return { useExternalWalletProvidersOnly, externalChainTypes: providers, internalChainTypes: internalChainTypes.filter((chainType) => !providers.includes(chainType)), }; }, [ hasExternalEVMContext, hasExternalSVMContext, hasExternalUTXOContext, hasExternalSuiContext, walletConfig?.usePartialWalletManagement, ]); return data; } //# sourceMappingURL=useExternalWalletProvider.js.map