import { useParams } from "react-router-dom"; import React, { useState, useEffect, useCallback } from "react"; import ActivityTimeline from "../../components/Project/ActivityTimeline"; import ProjectOverview from "../../components/Project/ProjectOverview"; import AboutProject from "../../components/Project/AboutProject"; import ProjectNav from "../../components/Project/ProjectNav"; import ProjectBanner from "../../components/Project/ProjectBanner"; 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 ProjectRepository from "../../repositories/ProjectRepository"; import { ActivityeRepository } from "../../repositories/MastersRepository"; import "./ProjectDetails.css"; import { useEmployeesByProjectAllocated, useProjectDetails, } from "../../hooks/useProjects"; import { useDispatch } from "react-redux"; import { setProjectId } from "../../slices/localVariablesSlice"; import { ComingSoonPage } from "../Misc/ComingSoonPage"; import Directory from "../Directory/Directory"; import eventBus from "../../services/eventBus"; import ProjectProgressChart from "../../components/Dashboard/ProjectProgressChart"; const ProjectDetails = () => { let { projectId } = useParams(); const { projects_Details, loading: projectLoading, error: ProjectError, refetch } = useProjectDetails(projectId); const dispatch = useDispatch(); const [project, setProject] = useState(null); // const [projectDetails, setProjectDetails] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(""); // const fetchData = async () => { // const project_cache = getCachedData("projectInfo"); // if (!project_cache || project_cache?.projectId !== projectId) { // ProjectRepository.getProjectByprojectId(projectId) // .then((response) => { // setProjectDetails(response.data); // setProject(response.data); // cacheData("projectInfo", { projectId, data: response.data }); // setLoading(false); // }) // .catch((error) => { // console.error(error); // setError("Failed to fetch data."); // setLoading(false); // }); // } else { // setProjectDetails(project_cache.data); // setProject(project_cache.data); // setLoading(false); // } // }; const [activePill, setActivePill] = useState("profile"); const handlePillClick = (pillKey) => { setActivePill(pillKey); }; const handleDataChange = (data) => { fetchData(); }; const renderContent = () => { if (projectLoading) return ; switch (activePill) { case "profile": { return (
); } case "teams": { return (
{/* Teams */} {/* Teams */}
); break; } case "infra": { return ( ); break; } case "workplan": { return ( ); break; } case "directory": { return (
); } default: return ; } }; useEffect(() => { dispatch(setProjectId(projectId)); }, [projects_Details, projectId]); const handler = useCallback( (msg) => { if (msg.keyword === "Update_Project" && projects_Details.id === msg.response.id) { refetch() } }, [projects_Details, handleDataChange] ); useEffect(() => { eventBus.on("project", handler); return () => eventBus.off("project", handler); }, [handler]); return ( <> {}
{projectLoading &&

Loading....

} {/* {!projectLoading && project && ( )} */}
{renderContent()}
); }; export default ProjectDetails;