UNPKG

@openocean.finance/wallet-management

Version:

Openocean Wallet Management solution.

47 lines 2.37 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { Avatar, ListItemAvatar } from '@mui/material'; import { ChainId, ChainType } from '@openocean.finance/widget-sdk'; import { useWallet } from '@solana/wallet-adapter-react'; 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'; export const SVMListItemButton = ({ ecosystemSelection, walletAdapter, onConnected, onConnecting, onError, }) => { const emitter = useWalletManagementEvents(); const { select, disconnect, connected } = useWallet(); const { setLastConnectedAccount } = useLastConnectedAccount(); const connectorName = walletAdapter.name; const connectorDisplayName = ecosystemSelection ? 'Solana' : walletAdapter.name; const connectWallet = async () => { try { onConnecting?.(); if (connected) { await disconnect(); } select(walletAdapter.name); // We use autoConnect on wallet selection // await connect() walletAdapter.once('connect', (publicKey) => { setLastConnectedAccount(walletAdapter); emitter.emit(WalletManagementEvent.WalletConnected, { address: publicKey?.toString(), chainId: ChainId.SOL, chainType: ChainType.SVM, connectorId: connectorName, connectorName: connectorName, }); }); onConnected?.(); } catch (error) { onError?.(error); } }; return (_jsxs(ListItemButton, { onClick: connectWallet, children: [_jsx(ListItemAvatar, { children: _jsx(Avatar, { src: ecosystemSelection ? 'https://s3.openocean.finance/token_logos/logos/1745547977998_539267174675113.svg' : walletAdapter.icon, alt: connectorDisplayName, children: connectorDisplayName[0] }) }), _jsx(ListItemText, { primary: connectorDisplayName })] }, connectorDisplayName)); }; //# sourceMappingURL=SVMListItemButton.js.map