Skip to content
Snippets Groups Projects
SideBar.tsx 1.64 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { Button } from '@mui/material'
    
    import { useMutation } from '@tanstack/react-query'
    
    import React from 'react'
    
    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