import { fetchAllCustomers, fetchAllSubsidiaries } from "@/app/api/customer"; import { fetchGrades } from "@/app/api/grades"; import { fetchProjectBuildingTypes, fetchProjectCategories, fetchProjectContractTypes, fetchProjectDetails, fetchProjectFundingTypes, fetchProjectLocationTypes, fetchProjectServiceTypes, fetchProjectWorkNatures, } from "@/app/api/projects"; import { preloadStaff, preloadTeamLeads } from "@/app/api/staff"; import { fetchAllTasks, fetchTaskTemplates } from "@/app/api/tasks"; import { ServerFetchError } from "@/app/utils/fetchUtil"; import CreateProject from "@/components/CreateProject"; import { I18nProvider, getServerI18n } from "@/i18n"; import Typography from "@mui/material/Typography"; import { isArray } from "lodash"; import { Metadata } from "next"; import { notFound } from "next/navigation"; interface Props { searchParams: { [key: string]: string | string[] | undefined }; } export const metadata: Metadata = { title: "Edit Project", }; const Projects: React.FC = async ({ searchParams }) => { const { t } = await getServerI18n("projects"); // Assume projectId is string here const projectId = searchParams["id"]; if (!projectId || isArray(projectId)) { notFound(); } // Preload necessary dependencies fetchAllTasks(); fetchTaskTemplates(); fetchProjectCategories(); fetchProjectContractTypes(); fetchProjectFundingTypes(); fetchProjectLocationTypes(); fetchProjectServiceTypes(); fetchProjectBuildingTypes(); fetchProjectWorkNatures(); fetchAllCustomers(); fetchAllSubsidiaries(); fetchGrades(); preloadTeamLeads(); preloadStaff(); try { await fetchProjectDetails(projectId); } catch (e) { if (e instanceof ServerFetchError && e.response?.status === 404) { notFound(); } } return ( <> {t("Edit Project")} ); }; export default Projects;