import * as React from 'react'; import Box from '@mui/material/Box'; import Divider from '@mui/material/Divider'; import ListItemIcon from '@mui/material/ListItemIcon'; import MenuItem from '@mui/material/MenuItem'; import MenuList from '@mui/material/MenuList'; import Popover from '@mui/material/Popover'; import Typography from '@mui/material/Typography'; import {SignOut as SignOutIcon} from '@phosphor-icons/react/dist/ssr/SignOut'; import {SignIn as SignInIcon} from '@phosphor-icons/react/dist/ssr/SignIn'; import {logger} from "../../lib/DefaultLogger"; import {useAuth} from "../../hooks/useAuth"; import {authClient} from "../../lib/clients/AuthClient"; import {useLocation} from "react-router-dom"; import {useUser} from "../../hooks/useUser"; import {paths} from "../../path"; export function UserPopover({anchorEl, onClose, open}) { const {checkSession} = useAuth(); const {user, session} = useUser(); const location = useLocation(); const handleSignOut = React.useCallback(async () => { try { const {error} = await authClient.signOut(); if (error) { logger.error('Sign out error', error); return; } // Refresh the auth state await checkSession?.(); // UserProvider, for this case, will not refresh the router and we need to do it manually window.location.reload(); // After refresh, AuthGuard will handle the redirect } catch (err) { logger.error('Sign out error', err); } // eslint-disable-next-line }, [checkSession, location]); return ( {userDescriptor(user, session)} {/**/} {/* */} {/* */} {/* */} {/* Настройки*/} {/**/} {/**/} {/* */} {/* */} {/* */} {/* Профиль*/} {/**/} {!user.name ? window.location.replace(paths.auth.signIn)}> Вход : Выход } ); } function userDescriptor(user) { if (!user) { return null; } if (!user.name) { return (Гость); } return ( <> {user.name + " " + user.lastName} {user.id} ); }