UNPKG

@openocean.finance/widget

Version:

Openocean Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.

51 lines 2.42 kB
import { getConnectorClient as getBigmiConnectorClient } from '@bigmi/client'; import { useConfig as useBigmiConfig } from '@bigmi/react'; import { ChainType, Near, EVM, Solana, UTXO, config, } from '@openocean.finance/widget-sdk'; 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 nearProvider = Near(); const bigmiConfig = useBigmiConfig(); 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); 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), })); } // Always register a Near (NVM) provider so balances can be queried for NEAR. providers.push(nearProvider); if (sdkConfig?.providers?.length) { providers.push(...sdkConfig.providers); } config.setProviders(providers); }, [bigmiConfig, sdkConfig?.providers, wagmiConfig, wallet?.adapter]); return null; }; //# sourceMappingURL=SDKProviders.js.map