import useLoginMode from "@/hooks/useLoginMode"; import usePfp from "@/hooks/usePfp"; import useUser from "@/hooks/useUser"; import System from "@/models/system"; import paths from "@/utils/paths"; import { userFromStorage } from "@/utils/request"; import { Person } from "@phosphor-icons/react"; import { useEffect, useRef, useState } from "react"; import AccountModal from "../AccountModal"; import { AUTH_TIMESTAMP, AUTH_TOKEN, AUTH_USER } from "@/utils/constants"; import { useTranslation } from "react-i18next"; export default function UserButton() { const { t } = useTranslation(); const mode = useLoginMode(); const { user } = useUser(); const menuRef = useRef(); const buttonRef = useRef(); const [showMenu, setShowMenu] = useState(false); const [showAccountSettings, setShowAccountSettings] = useState(false); const [supportEmail, setSupportEmail] = useState(""); const handleClose = (event) => { if ( menuRef.current && !menuRef.current.contains(event.target) && !buttonRef.current.contains(event.target) ) { setShowMenu(false); } }; const handleOpenAccountModal = () => { setShowAccountSettings(true); setShowMenu(false); }; useEffect(() => { if (showMenu) { document.addEventListener("mousedown", handleClose); } return () => document.removeEventListener("mousedown", handleClose); }, [showMenu]); useEffect(() => { const fetchSupportEmail = async () => { const supportEmail = await System.fetchSupportEmail(); setSupportEmail( supportEmail?.email ? `mailto:${supportEmail.email}` : paths.mailToMintplex() ); }; fetchSupportEmail(); }, []); if (mode === null) return null; return (
{showMenu && (
{mode === "multi" && !!user && ( )} {t("profile_settings.support")}
)} {user && showAccountSettings && ( setShowAccountSettings(false)} /> )}
); } function UserDisplay() { const { pfp } = usePfp(); const user = userFromStorage(); if (pfp) { return (
User profile picture
); } return user?.username?.slice(0, 2) || "AA"; }