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