@openocean.finance/wallet-management
Version:
Openocean Wallet Management solution.
47 lines • 2.37 kB
JavaScript
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