Skip to content
Snippets Groups Projects
SideBar.tsx 1.63 KiB
Newer Older
import { Button } from '@mui/material'
import React from 'react'
import { useMutation } from 'react-query'
import { NavLink } from 'react-router-dom'
import { fetchLogout, useWhoAmI } from '../../API'
Bastien DUMONT's avatar
Bastien DUMONT committed
import logo from '../../assets/icons/ecolyo-logo.svg'
import { routes } from '../Routes/Router'
import './sidebar.scss'
Bastien DUMONT's avatar
Bastien DUMONT committed
const SideBar: React.FC = () => {
  const { data: user } = useWhoAmI()

  const { mutate: logout } = useMutation({
    mutationFn: fetchLogout,
    onMutate: () => {
      location.reload()
    },
  })

  if (!user) return <div />
    <nav className="menu">
      <div className="logo-container">
        <img src={logo} alt="Ecolyo logo" className="logo" />
      </div>
      <div className="menu-list">
        {user &&
          routes.map(
Bastien DUMONT's avatar
Bastien DUMONT committed
            route =>
              (!route.adminOnly || user.isAdmin) && (
                <NavLink
                  key={route.label}
                  to={route.path}
                  className={({ isActive }) => (isActive ? 'active' : '')}
                >
                  {route.label}
                </NavLink>
              )
          )}
        {process.env.NODE_ENV === 'development' && (
          <a href="/doc/" target="_blank">
            Swagger doc
          </a>
        )}
      <div className="bottom">
          <Button variant="outlined" onClick={() => logout()}>
Guilhem CARRON's avatar
Guilhem CARRON committed
            Logout
          <NavLink to="/login" className="active">
Bastien DUMONT's avatar
Bastien DUMONT committed
export default SideBar