import { AuthTokenPayload, Permission } from "@vertesia/common"; import { Avatar, Button, MenuList, ModeToggle, Popover, PopoverContent, PopoverTrigger, Spinner } from "@vertesia/ui/core"; import { useUserSession } from "@vertesia/ui/session"; import clsx from "clsx"; import { useState } from "react"; import SignInModal from "./SignInModal"; import InfoList from "./UserInfo"; import { useNavigate } from "@vertesia/ui/router"; import { useUserPermissions } from "@vertesia/ui/features"; interface UserSessionMenuProps { name?: string picture?: string; user?: AuthTokenPayload; } export function UserSessionMenu({ }: UserSessionMenuProps) { const { user, isLoading } = useUserSession(); const [showModal, setShowModal] = useState(false) if (isLoading) { return } else if (!user) { return <> setShowModal(false)} /> } else { return (
) } } interface UserSessionPopupProps { asMenuTrigger?: boolean className?: string } function UserSessionPopup({ className, asMenuTrigger = false }: UserSessionPopupProps) { const session = useUserSession(); const navigate = useNavigate(); const perms = useUserPermissions(); const { user } = session; if (!session || !user) return null; const isProjectManager = perms.hasPermission(Permission.project_admin); return (

{user?.name ?? 'Unknown'}

{user?.email ?? ''}

{isProjectManager && ( navigate('/settings', { replace: true })}> Settings )} session.logout()}> Sign out
) }