import { useSelector, useDispatch } from "react-redux"; // Import useSelector import React, { useState, useEffect, useCallback } from "react"; import ProjectOverview from "../../components/Project/ProjectOverview"; import AboutProject from "../../components/Project/AboutProject"; import ProjectNav from "../../components/Project/ProjectNav"; import Teams from "../../components/Project/Teams"; import ProjectInfra from "../../components/Project/ProjectInfra"; import Loader from "../../components/common/Loader"; import WorkPlan from "../../components/Project/WorkPlan"; import Breadcrumb from "../../components/common/Breadcrumb"; import { cacheData, clearCacheKey, getCachedData, } from "../../slices/apiDataManager"; import "./ProjectDetails.css"; import { useProjectDetails, } from "../../hooks/useProjects"; import { ComingSoonPage } from "../Misc/ComingSoonPage"; import Directory from "../Directory/Directory"; import eventBus from "../../services/eventBus"; import ProjectProgressChart from "../../components/Dashboard/ProjectProgressChart"; import { useProjectName } from "../../hooks/useProjects"; import AttendanceOverview from "../../components/Dashboard/AttendanceChart"; import { setProjectId } from "../../slices/localVariablesSlice"; const ProjectDetails = () => { const projectId = useSelector((store) => store.localVariables.projectId); const { projectNames, fetchData } = useProjectName(); const dispatch = useDispatch() useEffect(() => { if (projectId == null) { dispatch(setProjectId(projectNames[0]?.id)); } }, [projectNames]) const { projects_Details, loading: projectLoading, error: projectError, refetch, } = useProjectDetails(projectId); const [activePill, setActivePill] = useState("profile"); const handler = useCallback( (msg) => { if (msg.keyword === "Update_Project" && projects_Details?.id === msg.response.id) { refetch(); } }, [projects_Details, refetch] ); useEffect(() => { eventBus.on("project", handler); return () => eventBus.off("project", handler); }, [handler]); const handlePillClick = (pillKey) => { setActivePill(pillKey); }; const renderContent = () => { if (projectLoading || !projects_Details) return ; switch (activePill) { case "profile": return ( <>
); case "teams": return (
); case "infra": return ( ); case "workplan": return ( ); case "directory": return (
); default: return ; } }; return (
{renderContent()}
); }; export default ProjectDetails;