@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
JavaScript
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