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