'use client'; import { useConnectWallet } from '@aelf-web-login/wallet-adapter-react'; import { Button } from 'aelf-design'; import { TWalletInfo } from '@aelf-web-login/wallet-adapter-base'; import { useState } from 'react'; import { useAppDispatch, useAppSelector } from '@/app/lib/reduxToolkit/hooks'; import { deleteWalletInfo, getWalletInfo, setWalletInfo, } from '@/app/lib/reduxToolkit/features/walletConnect/walletConnectSlice'; import WebLoginProvider from './providers'; export default function Page() { return (
); } const WalletConnect = () => { const [walletConnected, setWalletConnected] = useState(); const { connectWallet, disConnectWallet, walletInfo } = useConnectWallet(); const onConnectBtnClickHandler = async () => { try { const rs = await connectWallet(); setWalletConnected(formatWalletInfo(rs)); console.log('rs: ', rs); } catch (e: any) { console.log(e.message); } }; const onDisConnectBtnClickHandler = async () => { await disConnectWallet(); setWalletConnected(null); }; return ( <>
Account name: {walletConnected?.name}
Account name: {walletConnected?.address}
walletInfo: {JSON.stringify(walletInfo)}
); }; const WalletConnectWithRTK = () => { const dispatch = useAppDispatch(); const walletConnected = useAppSelector(getWalletInfo); const { connectWallet, disConnectWallet, walletInfo } = useConnectWallet(); const onConnectBtnClickHandler = async () => { try { const rs = await connectWallet(); dispatch(setWalletInfo(formatWalletInfo(rs))); console.log('walletConnected rs: ', rs); } catch (e: any) { console.log(e.message); } }; const onDisConnectBtnClickHandler = async () => { await disConnectWallet(); dispatch(deleteWalletInfo()); }; console.log('walletConnected: ', walletConnected); return ( <>
We can see the changes of the account name and address in the left sidebar.
Account name: {walletConnected?.name}
Account name: {walletConnected?.address}
walletInfo: {JSON.stringify(walletInfo)}
); }; /** * @description * If we do not format the data, we will get the error follow. * RTK: A non-serializable value was detected in an action; * @param walletInfo */ function formatWalletInfo(walletInfo: TWalletInfo) { return { name: walletInfo?.name || '-', address: walletInfo?.address || '-', }; }