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