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.

62 lines 2.68 kB
import { getConnectorClient as getBigmiConnectorClient } from '@bigmi/client'; import { useConfig as useBigmiConfig } from '@bigmi/react'; import { ChainType, config, EVM, Solana, Sui, UTXO } from '@lifi/sdk'; import { useCurrentWallet } from '@mysten/dapp-kit'; import { useWallet } from '@solana/wallet-adapter-react'; import { useEffect } from 'react'; import { useConfig as useWagmiConfig } from 'wagmi'; import { getConnectorClient as getWagmiConnectorClient, switchChain, } from 'wagmi/actions'; import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'; export const SDKProviders = () => { const { sdkConfig } = useWidgetConfig(); const { wallet } = useWallet(); const wagmiConfig = useWagmiConfig(); const bigmiConfig = useBigmiConfig(); const { currentWallet } = useCurrentWallet(); useEffect(() => { // Configure SDK Providers const providers = []; const hasConfiguredEVMProvider = sdkConfig?.providers?.find((provider) => provider.type === ChainType.EVM); const hasConfiguredSVMProvider = sdkConfig?.providers?.some((provider) => provider.type === ChainType.SVM); const hasConfiguredUTXOProvider = sdkConfig?.providers?.some((provider) => provider.type === ChainType.UTXO); const hasConfiguredSuiProvider = sdkConfig?.providers?.some((provider) => provider.type === ChainType.MVM); if (!hasConfiguredEVMProvider) { providers.push(EVM({ getWalletClient: () => getWagmiConnectorClient(wagmiConfig), switchChain: async (chainId) => { const chain = await switchChain(wagmiConfig, { chainId }); return getWagmiConnectorClient(wagmiConfig, { chainId: chain.id }); }, })); } if (!hasConfiguredSVMProvider) { providers.push(Solana({ async getWalletAdapter() { return wallet?.adapter; }, })); } if (!hasConfiguredUTXOProvider) { providers.push(UTXO({ getWalletClient: () => getBigmiConnectorClient(bigmiConfig), })); } if (!hasConfiguredSuiProvider) { providers.push(Sui({ getWallet: async () => currentWallet, })); } if (sdkConfig?.providers?.length) { providers.push(...sdkConfig.providers); } config.setProviders(providers); }, [ bigmiConfig, currentWallet, sdkConfig?.providers, wagmiConfig, wallet?.adapter, ]); return null; }; //# sourceMappingURL=SDKProviders.js.map