|
|
@@ -12,23 +12,30 @@ import { |
|
|
|
} 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 { |
|
|
|
params: { |
|
|
|
projectId: string; |
|
|
|
}; |
|
|
|
searchParams: { [key: string]: string | string[] | undefined }; |
|
|
|
} |
|
|
|
|
|
|
|
export const metadata: Metadata = { |
|
|
|
title: "Edit Project", |
|
|
|
}; |
|
|
|
|
|
|
|
const Projects: React.FC<Props> = async ({ params }) => { |
|
|
|
const Projects: React.FC<Props> = 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(); |
|
|
@@ -46,14 +53,19 @@ const Projects: React.FC<Props> = async ({ params }) => { |
|
|
|
preloadTeamLeads(); |
|
|
|
preloadStaff(); |
|
|
|
|
|
|
|
// TODO: Handle not found |
|
|
|
const fetchedProject = await fetchProjectDetails(params.projectId); |
|
|
|
try { |
|
|
|
await fetchProjectDetails(projectId); |
|
|
|
} catch (e) { |
|
|
|
if (e instanceof ServerFetchError && e.response?.status === 404) { |
|
|
|
notFound(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return ( |
|
|
|
<> |
|
|
|
<Typography variant="h4">{t("Edit Project")}</Typography> |
|
|
|
<I18nProvider namespaces={["projects"]}> |
|
|
|
<CreateProject isEditMode projectId={params.projectId} /> |
|
|
|
<CreateProject isEditMode projectId={projectId} /> |
|
|
|
</I18nProvider> |
|
|
|
</> |
|
|
|
); |