import ArrowBack from '@mui/icons-material/ArrowBack'; import MenuIcon from '@mui/icons-material/Menu'; import Box from '@mui/material/Box'; import IconButton from '@mui/material/IconButton'; import Toolbar from '@mui/material/Toolbar'; import Tooltip from '@mui/material/Tooltip'; import React, { FC, ReactNode } from 'react'; import { useLocation } from 'react-router-dom'; import { appRouter } from 'components/router/appRouter'; import { useApi } from 'hooks/useApi'; import globalize from 'scripts/globalize'; import UserMenuButton from './UserMenuButton'; interface AppToolbarProps { buttons?: ReactNode isDrawerAvailable: boolean isDrawerOpen: boolean onDrawerButtonClick: (event: React.MouseEvent) => void } const onBackButtonClick = () => { appRouter.back() .catch(err => { console.error('[AppToolbar] error calling appRouter.back', err); }); }; const AppToolbar: FC = ({ buttons, children, isDrawerAvailable, isDrawerOpen, onDrawerButtonClick }) => { const { user } = useApi(); const isUserLoggedIn = Boolean(user); const currentLocation = useLocation(); const isBackButtonAvailable = appRouter.canGoBack(); // Handles a specific case to hide the user menu on the select server page while authenticated const isUserMenuAvailable = currentLocation.pathname !== '/selectserver.html'; return ( {isUserLoggedIn && isDrawerAvailable && ( )} {isBackButtonAvailable && ( )} {children} {isUserLoggedIn && isUserMenuAvailable && ( <> {buttons} )} ); }; export default AppToolbar;