import { useState } from 'react' import { useSelector, useDispatch } from 'react-redux' import { Link as RouterLink, useHistory } from 'react-router-dom' import { AppBar, Avatar, Button, Fade, IconButton, Link, ListItemText, Menu, MenuItem, Toolbar, Typography } from '@material-ui/core' import { deepPurple } from '@material-ui/core/colors' import { makeStyles } from '@material-ui/core/styles' import { logout } from '../../redux/authSlice' import logo from '../../static/favicon.ico' import { getUppercaseInitial } from '../../utils/GalleryUtils' const useStyles = makeStyles((theme) => ({ appBar: { borderBottom: `1px solid ${theme.palette.divider}` }, toolbar: { flexWrap: 'wrap' }, toolbarTitle: { flexGrow: 1 }, link: { margin: theme.spacing(1, 1.5) }, button: { marginRight: theme.spacing(0.7) }, small: { width: theme.spacing(3.7), height: theme.spacing(3.7), borderRadius: '10%' }, purple: { width: theme.spacing(3.75), height: theme.spacing(3.75), color: theme.palette.getContrastText(deepPurple[500]), backgroundColor: deepPurple[500], fontSize: '17px' } })) // Common navbar for Dashboard, Home, Gallery, etc. export function Header () { const history = useHistory() const classes = useStyles() const [anchorEl, setAnchorEl] = useState(null) const isAuthenticated = useSelector(state => state.auth.isAuthenticated) const user = useSelector(state => state.auth.user) const dispatch = useDispatch() const handleClick = (event) => { setAnchorEl(event.currentTarget) } const handleClose = () => { setAnchorEl(null) } const link = process.env.REACT_APP_NAME const altImage = process.env.REACT_APP_NAME + ' logo' const typography = 'My ' + process.env.REACT_APP_DIAGRAMS_NAME return ( <> {/* Display logo */} {link} {/* Display relative link to other pages */} {/* Display login option or user menu as per authenticated status */} { (!isAuthenticated ? : <> {getUppercaseInitial(user.username)} {typography} { dispatch(logout(history)) }} > Logout ) } ) } export default function Navbar () { const classes = useStyles() return (
) }