import { useEffect, useRef, useState } from "react"; import { useI18n } from "../i18n"; import { shortenAddress, useWallet } from "./WalletProvider"; export function WalletButton({ compact = false, onOpenLogin, }: { compact?: boolean; onOpenLogin?: () => void; }) { const { t } = useI18n(); const wallet = useWallet(); const [open, setOpen] = useState(false); const rootRef = useRef(null); useEffect(() => { if (!open) return; const closeOnOutside = (event: MouseEvent | TouchEvent) => { if (!rootRef.current?.contains(event.target as Node)) setOpen(false); }; const closeOnEscape = (event: KeyboardEvent) => { if (event.key === "Escape") setOpen(false); }; document.addEventListener("mousedown", closeOnOutside); document.addEventListener("touchstart", closeOnOutside); window.addEventListener("keydown", closeOnEscape); return () => { document.removeEventListener("mousedown", closeOnOutside); document.removeEventListener("touchstart", closeOnOutside); window.removeEventListener("keydown", closeOnEscape); }; }, [open]); if (wallet.status === "loggedIn" && wallet.address) { return (
{open ? (
{wallet.address}
) : null}
); } return ( ); }