import { FC, useCallback, useState, useEffect, useMemo } from "react" import { useSelector } from "react-redux" import classnames from "classnames" import { isUserConnected, routerSelector, selectUserRoles, selectUserId } from "../../store/auth" import styles from "./styles.module.scss" import ROLES from "../../utils/roles.constants" import useAction from "../../utils/useAction" import { fetchVolunteerListIfNeed, selectVolunteerList } from "../../store/volunteerList" interface MenuItemProps { name: string pathname: string } const MenuItem: FC = ({ name, pathname }): JSX.Element => { const router = useSelector(routerSelector) const isActive = (router as any)?.location?.pathname === pathname return (
  • {name}
  • ) } interface RestrictMenuItemProps extends MenuItemProps { role: string } const RestrictMenuItem: FC = ({ name, pathname, role }): JSX.Element => { const roles = useSelector(selectUserRoles) return roles.includes(role) ? : <> } interface TeamMenuItemProps extends MenuItemProps { team: number } const TeamMenuItem: FC = ({ name, pathname, team }): JSX.Element => { const fetch = useAction(fetchVolunteerListIfNeed) const userId = useSelector(selectUserId) useEffect(() => { if (userId) fetch() }, [userId, fetch]) const volunteers = useSelector(selectVolunteerList) const user = useMemo( () => volunteers.find((volunteer) => volunteer.id === userId), [volunteers, userId] ) return user?.team === team ? : <> } // Hardcoded value of the "Jeux à volonté" team const TEAM_JAV = 2 const MainMenu: FC = (): JSX.Element => { const connected = useSelector(isUserConnected) const [opened, setOpened] = useState(false) const onOpen = useCallback(() => { setOpened(true) }, [setOpened]) const onClose = useCallback(() => { setOpened(false) }, [setOpened]) if (!connected) return
    return ( ) } export default MainMenu // // Fetch server-side data here // export const fetchFor = [ // ...fetchForTeamWishesForm, // ]