"use client"; import { useEffect, useRef, useState } from "react"; import { useRouter } from "next/navigation"; import { useAuth } from "@/components/AuthProvider"; import { en } from "@/lib/i18n/en"; import { getAdminDashboardOrigin, getCustomerDashboardOrigin, hostAppFor, } from "@/lib/host"; import { openBusinessDashboardAsUser } from "@/lib/session-handoff"; import { getFirstName } from "@/lib/userName"; import styles from "./AccountMenu.module.css"; export default function AccountMenu() { const router = useRouter(); const { user, logout, isBusinessOwner, isSuperAdmin } = useAuth(); const [open, setOpen] = useState(false); const rootRef = useRef(null); const firstName = getFirstName(user); const app = typeof window !== "undefined" ? hostAppFor(window.location.host) : "admin"; const customerUrl = getCustomerDashboardOrigin(); const adminUrl = getAdminDashboardOrigin(); useEffect(() => { if (!open) return; const onPointerDown = (event: PointerEvent) => { if (!rootRef.current?.contains(event.target as Node)) { setOpen(false); } }; const onKey = (event: KeyboardEvent) => { if (event.key === "Escape") setOpen(false); }; window.addEventListener("pointerdown", onPointerDown); window.addEventListener("keydown", onKey); return () => { window.removeEventListener("pointerdown", onPointerDown); window.removeEventListener("keydown", onKey); }; }, [open]); return (
{open ? (
setOpen(false)} > My profile setOpen(false)} > Change password {isBusinessOwner ? ( ) : null} {isSuperAdmin ? ( setOpen(false)} > Super admin ) : null} {app !== "customer" ? ( setOpen(false)} > {en.openCustomerDashboard} ) : null}
) : null}
); }