import { MenuItem, MenuItemProps } from '@biom3/react'; import { forwardRef, useImperativeHandle, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useWalletConnect } from '../../lib/hooks/useWalletConnect'; export interface WalletConnectItemProps { onWalletItemClick: () => Promise; loading: boolean; size?: MenuItemProps['size']; } export const WalletConnectItem = forwardRef( ( { onWalletItemClick, loading, size = 'medium' }: WalletConnectItemProps, ref, ) => { const { t } = useTranslation(); const { walletConnectBusy } = useWalletConnect(); const [busy, setBusy] = useState(false); const connect = async () => { if (loading) return; setBusy(true); // let the parent handle errors try { await onWalletItemClick(); } finally { setBusy(false); } }; useImperativeHandle(ref, () => ({ connect, })); return ( {t('wallets.walletconnect.heading')} {busy && } ); }, );