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.

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