UNPKG

@lifi/wallet-management

Version:

LI.FI Wallet Management solution.

52 lines 2.68 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { ChainType } from '@lifi/sdk'; import { Avatar, ListItemAvatar } from '@mui/material'; import { useConfig } from 'wagmi'; import { connect, disconnect, getAccount } from 'wagmi/actions'; import { ListItemButton } from '../components/ListItemButton.js'; import { ListItemText } from '../components/ListItemText.js'; import { useLastConnectedAccount } from '../hooks/useAccount.js'; import { useWalletManagementEvents } from '../hooks/useWalletManagementEvents.js'; import { WalletManagementEvent } from '../types/events.js'; import { getConnectorIcon } from '../utils/getConnectorIcon.js'; import { isWalletInstalled } from '../utils/isWalletInstalled.js'; export const EVMListItemButton = ({ ecosystemSelection, connector, onNotInstalled, onConnected, onConnecting, onError, }) => { const emitter = useWalletManagementEvents(); const config = useConfig(); const { setLastConnectedAccount } = useLastConnectedAccount(); const connectorName = connector.displayName || connector.name; const connectorDisplayName = ecosystemSelection ? 'Ethereum' : connectorName; const handleEVMConnect = async () => { try { const identityCheckPassed = isWalletInstalled(connector.id); if (!identityCheckPassed) { onNotInstalled?.(connector); return; } const connectedAccount = getAccount(config); onConnecting?.(); const data = await connect(config, { connector }); if (connectedAccount.connector) { await disconnect(config, { connector: connectedAccount.connector }); } setLastConnectedAccount(connector); emitter.emit(WalletManagementEvent.WalletConnected, { address: data.accounts[0], chainId: data.chainId, chainType: ChainType.EVM, connectorId: connector.id, connectorName: connectorName, }); onConnected?.(); } catch (error) { onError?.(error); } }; return (_jsxs(ListItemButton, { onClick: handleEVMConnect, children: [_jsx(ListItemAvatar, { children: _jsx(Avatar, { src: ecosystemSelection ? 'https://raw.githubusercontent.com/lifinance/types/main/src/assets/icons/chains/ethereum.svg' : getConnectorIcon(connector), alt: connectorDisplayName, children: connectorDisplayName?.[0] }) }), _jsx(ListItemText, { primary: connectorDisplayName })] }, connector.id)); }; //# sourceMappingURL=EVMListItemButton.js.map