import getGreetingMessage from "../../utils/greetingHandler"; import { clearAllCache } from "../../slices/apiDataManager"; import AuthRepository from "../../repositories/AuthRepository"; import { useDispatch, useSelector } from "react-redux"; import { changeMaster, setProjectId } from "../../slices/localVariablesSlice"; import useMaster from "../../hooks/masterHook/useMaster"; import { useProfile } from "../../hooks/useProfile"; import { useLocation, useNavigate, useParams } from "react-router-dom"; import Avatar from "../../components/common/Avatar"; import { useChangePassword } from "../Context/ChangePasswordContext"; import { useProjects } from "../../hooks/useProjects"; import { useEffect, useState } from "react"; import { useProjectName } from "../../hooks/useProjects"; const Header = () => { const { profile } = useProfile(); const location = useLocation(); const dispatch = useDispatch(changeMaster("Job Role")); const { data, loading } = useMaster(); const navigate = useNavigate(); const getRole = (roles, joRoleId) => { if (!Array.isArray(roles)) return "User"; let role = roles.find((role) => role.id === joRoleId); return role ? role.name : "User"; }; const handleLogout = (e) => { e.preventDefault(); // Prevent default anchor behavior (e.g., page reload) logout(); }; const logout = async () => { try { // Notify server about the logout (optional) let data = { refreshToken: localStorage.getItem("refreshToken"), }; AuthRepository.logout(data) .then((response) => { localStorage.removeItem("jwtToken"); localStorage.removeItem("refreshToken"); localStorage.removeItem("user"); localStorage.clear(); clearAllCache(); window.location.href = "/auth/login"; }) .catch((error) => { localStorage.removeItem("jwtToken"); localStorage.removeItem("refreshToken"); localStorage.removeItem("user"); clearAllCache(); window.location.href = "/auth/login"; }); } catch (error) { console.error( "Error during logout:", error?.response?.data || error.message ); } }; const handleProfilePage = () => { navigate(`/employee/${profile?.employeeInfo?.id}?for=attendance`); }; // const { projects, loading: projectLoading } = useProjects(); const { projectNames, loading: projectLoading } = useProjectName(); const selectedProject = useSelector( (store) => store.localVariables.projectId ); const selectedProjectName = projectNames?.find( (p) => p?.id === selectedProject )?.name; let displayText = ""; if (selectedProjectName) { displayText = selectedProjectName; } else if (projectLoading && selectedProject) { displayText = selectedProject; } else if (projectLoading) { displayText = "Loading..."; } const { openChangePassword } = useChangePassword(); useEffect(() => { if (projectNames && selectedProject !== " ") { dispatch(setProjectId(projectNames[0]?.id)); } }, [projectNames]); /** Check if current page id project details page */ const isProjectPath = /^\/projects\/[a-f0-9-]{36}$/.test(location.pathname); return ( ); }; export default Header;