import {useContext, useEffect, useRef, useState} from "react"; import {SessionContext} from "@/context/SessionContext"; import NoPicture from "@/components/NoPicture"; import System from "@/lib/models/System"; export default function UserMenu() { const {session} = useContext(SessionContext); 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 && !profileMenuRef.current.contains(event.target as Node)) { setIsProfileMenuOpen(false); } } if (isProfileMenuOpen) { document.addEventListener("mousedown", handleClickOutside); } return (): void => { document.removeEventListener("mousedown", handleClickOutside); }; }, [isProfileMenuOpen]); async function handleLogout(): Promise { System.removeCookie("token"); // Si dans Electron, utiliser IPC pour logout if (window.electron) { await window.electron.removeToken(); window.electron.logout(); } else { // Fallback web document.location.href = "https://eritors.com/login"; } } return (
{isProfileMenuOpen && (

{session.user?.username}

{session.user?.email}

Paramètres Déconnexion
)}
) }