@lifi/wallet-management
Version:
LI.FI Wallet Management solution.
53 lines • 2.26 kB
JavaScript
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