import Stack from "@mui/material/Stack"; import Box from "@mui/material/Box"; import Typography from "@mui/material/Typography"; import Tooltip from "@mui/material/Tooltip"; import IconButton from "@mui/material/IconButton"; import Avatar from "../../Avatar"; import ThemeSwitch from "../../ThemeSwitch"; import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; import Divider from "@mui/material/Divider"; import DotsVertical from "../../../assets/icons/dots-vertical.svg?react"; import LogoutSvg from "../../../assets/icons/logout.svg?react"; import { useTheme } from "@emotion/react"; import { useSelector } from "react-redux"; import { useTranslation } from "react-i18next"; import { useState } from "react"; import { useNavigate } from "react-router"; import { clearAuthState } from "../../../Features/Auth/authSlice"; import { useDispatch } from "react-redux"; const AuthFooter = ({ collapsed, accountMenuItems }) => { const { t } = useTranslation(); const theme = useTheme(); const authState = useSelector((state) => state.auth); const navigate = useNavigate(); const dispatch = useDispatch(); const [anchorEl, setAnchorEl] = useState(null); const [popup, setPopup] = useState(); const openPopup = (event, id) => { setAnchorEl(event.currentTarget); setPopup(id); }; const closePopup = () => { setAnchorEl(null); }; const logout = async () => { // Clear auth state dispatch(clearAuthState()); navigate("/login"); }; const renderAccountMenuItems = (user, items) => { let filteredAccountMenuItems = [...items]; // If the user is in demo mode, remove the "Password" option if (user.role?.includes("demo")) { filteredAccountMenuItems = filteredAccountMenuItems.filter( (item) => item.name !== "Password" ); } // If the user is NOT a superadmin, remove the "Team" option if (user.role && !user.role.includes("superadmin")) { filteredAccountMenuItems = filteredAccountMenuItems.filter( (item) => item.name !== "Team" ); } return filteredAccountMenuItems.map((item) => ( { closePopup(); navigate(item.path); }} sx={{ gap: theme.spacing(2), borderRadius: theme.shape.borderRadius, pl: theme.spacing(4), }} > {item.icon} {item.name} )); }; return ( {authState.user?.firstName} {authState.user?.lastName} {authState.user?.role?.includes("superadmin") ? t("roles.superAdmin") : authState.user?.role?.includes("admin") ? t("roles.admin") : authState.user?.role?.includes("user") ? t("roles.teamMember") : authState.user?.role?.includes("demo") ? t("roles.demoUser") : authState.user?.role} openPopup(event, "logout")} > {collapsed && ( {authState.user?.firstName} {authState.user?.lastName} {authState.user?.role} )} {/* TODO Do we need two dividers? */} {collapsed && } {/* */} {renderAccountMenuItems(authState.user, accountMenuItems)} {t("menu.logOut", "Log out")} ); }; export default AuthFooter;