UNPKG

@lifi/wallet-management

Version:

LI.FI Wallet Management solution.

53 lines 2.26 kB
import { disconnect as bigmiDisconnect, getAccount as bigmiGetAccount, } from '@bigmi/client'; import { useConfig as useBigmiConfig } from '@bigmi/react'; import { ChainType } from '@lifi/sdk'; import { useDisconnectWallet } from '@mysten/dapp-kit'; import { useWallet } from '@solana/wallet-adapter-react'; import { useConfig as useWagmiConfig } from 'wagmi'; import { disconnect, getAccount } from 'wagmi/actions'; import { WalletManagementEvent, } from '../types/events.js'; import { useWalletManagementEvents } from './useWalletManagementEvents.js'; export const useAccountDisconnect = () => { const emitter = useWalletManagementEvents(); const bigmiConfig = useBigmiConfig(); const wagmiConfig = useWagmiConfig(); const { disconnect: solanaDisconnect } = useWallet(); const { mutateAsync: disconnectWallet } = useDisconnectWallet(); const handleDisconnectEVM = async (config) => { const connectedAccount = getAccount(config); if (connectedAccount.connector) { await disconnect(config, { connector: connectedAccount.connector }); } }; const handleDisconnectUTXO = async (config) => { const connectedAccount = bigmiGetAccount(config); if (connectedAccount.connector) { await bigmiDisconnect(config, { connector: connectedAccount.connector }); } }; return async (account) => { const walletDisconnected = { address: account.address, chainId: account.chainId, chainType: account.chainType, connectorId: account.connector?.id, connectorName: account.connector?.name, }; switch (account.chainType) { case ChainType.EVM: await handleDisconnectEVM(wagmiConfig); break; case ChainType.UTXO: await handleDisconnectUTXO(bigmiConfig); break; case ChainType.SVM: await solanaDisconnect(); break; case ChainType.MVM: await disconnectWallet(); break; } emitter.emit(WalletManagementEvent.WalletDisconnected, walletDisconnected); }; }; //# sourceMappingURL=useAccountDisconnect.js.map