import React, { createContext, useContext, useEffect, useState } from "react"; import Breadcrumb from "../../components/common/Breadcrumb"; import { ITEMS_PER_PAGE, MANAGE_PROJECT, PROJECT_STATUS, } from "../../utils/constants"; import ProjectListView from "../../components/Project/ProjectListView"; import GlobalModel from "../../components/common/GlobalModel"; import ManageProjectInfo from "../../components/Project/ManageProjectInfo"; import ProjectCardView from "../../components/Project/ProjectCardView"; import usePagination from "../../hooks/usePagination"; import { useProjects } from "../../hooks/useProjects"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { SpinnerLoader } from "../../components/common/Loader"; import { useServiceProjects } from "../../hooks/useServiceProject"; import ManageServiceProject from "../../components/ServiceProject/ManageServiceProject"; import ProjectsDisplay from "./ProjectsDisplay"; import ServiceProjectDisplay from "../ServiceProject/ServiceProjectDisplay"; const ProjectContext = createContext(); export const useProjectContext = () => { const context = useContext(ProjectContext); if (!context) { throw new Error("useProjectContext must be used within an ProjectProvider"); } return context; }; const ProjectPage = () => { const [manageProject, setMangeProject] = useState({ isOpen: false, project: null, }); const [manageServiceProject, setManageServiceProject] = useState({ isOpen: false, project: null, }); const [projectList, setProjectList] = useState([]); const [listView, setListView] = useState(false); const [searchTerm, setSearchTerm] = useState(""); const [coreProjects, setCoreProjects] = useState(() => { const storedValue = sessionStorage.getItem('whichProjectDisplay'); return storedValue === 'true'; }); const HasManageProject = useHasUserPermission(MANAGE_PROJECT); const [selectedStatuses, setSelectedStatuses] = useState( PROJECT_STATUS.map((s) => s.id) ); const contextDispatcher = { setMangeProject, setManageServiceProject, manageProject, manageServiceProject, }; const handleToggleProject = (value) => { setCoreProjects(value); sessionStorage.setItem("whichProjectDisplay", String(value)); }; return (
{/* LEFT SIDE — DATE TOGGLE BUTTONS */}
{/* Service Project Button */} {/* Organization Project Button */}
{/* RIGHT SIDE — SEARCH + CARD/LIST + DROPDOWN */}
{/* Search */}
{ setSearchTerm(e.target.value); setCurrentPage(1); }} />
{/* Card/List Buttons */}
{/* Dropdown Filter */}
    {PROJECT_STATUS.map(({ id, label }) => (
  • handleStatusChange(id)} />
  • ))}
{HasManageProject && ( )}
{coreProjects ? : }
); }; export default ProjectPage;