import React, {useContext, useEffect, useRef, useState} from "react"; import {SessionContext, SessionContextProps} from "@/context/SessionContext"; import AvatarIcon from "@/components/ui/AvatarIcon"; import {removeCookie} from '@/lib/utils/cookies'; import {isDesktop} from '@/lib/configs'; import * as tauri from '@/lib/tauri'; import {useTranslations} from '@/lib/i18n'; export default function UserMenu(): React.JSX.Element { const {session}: SessionContextProps = useContext(SessionContext); const t = useTranslations(); const profileMenuRef: React.RefObject = useRef(null); const [isProfileMenuOpen, setIsProfileMenuOpen] = useState(false); function handleProfileClick(): void { setIsProfileMenuOpen(!isProfileMenuOpen); } useEffect((): () => void => { function handleClickOutside(event: MouseEvent): void { if (profileMenuRef.current && event.target instanceof Node && !profileMenuRef.current.contains(event.target)) { setIsProfileMenuOpen(false); } } if (isProfileMenuOpen) { document.addEventListener("mousedown", handleClickOutside); } return (): void => { document.removeEventListener("mousedown", handleClickOutside); }; }, [isProfileMenuOpen]); function handleLogout(): void { removeCookie("token"); if (isDesktop) { tauri.logout(); } else { document.location.href = "https://eritors.com/login"; } } return (
{isProfileMenuOpen && (

{session.user?.username}

{session.user?.email}

{t("userMenu.settings")} {t("userMenu.logout")}
)}
) }