import {Divider, List} from "@mui/material"; import {Fragment, useEffect, useReducer} from "react"; import SidebarListItem from "./SidebarListItem"; import sidebarMenu from "@/core/data/sidebarMenu"; import {useRouter} from "next/router"; import useUser from "@/lib/app/hooks/useUser"; function reducer(state, action) { switch (action.type) { case "COLLAPSE_MENU": return state.map((itemsArr) => itemsArr.map((item) => action.key == item.key ? {...item, showSubItem: !item.showSubItem} : item ) ); case "SELECTED": return state.map((itemsArr) => itemsArr.map((item) => { if (item.type === "page") { if (action.route === item.route) return {...item, selected: true} else return {...item, selected: false} } return {...item} // item.subItem.map((subitem) => { // if (action.route === subitem.route) // return {...item, showSubItem: true, subItem: {...subitem, selected: true}} // else // return {...item, showSubItem: false, subItem: {...subitem, selected: false}} // }) } ) ); default: throw new Error(); } } export default function SidebarList({handleDrawerToggle}) { const [itemMenu, dispatch] = useReducer(reducer, sidebarMenu); const {user} = useUser(); const router = useRouter(); useEffect(() => { dispatch({type: "SELECTED", route: router.pathname}); }, [router.pathname]); return ( {itemMenu.map((itemArr, index) => ( {itemArr.map((item) => {(user.permissions.includes(item.permission) || item.permission === "all") && } )} ))} ); }