From 72f872b2f9d5eeb44f27bcd5b6c39506e54df878 Mon Sep 17 00:00:00 2001 From: Rene Date: Wed, 1 Jul 2026 11:35:34 +0200 Subject: [PATCH] Fix projects.map crash on API error response Added res.ok guards on projects and time-tracking pages so that setProjects receives [] instead of an error object when the API returns a non-200 response. --- src/app/(dashboard)/projects/page.tsx | 3 ++- src/app/(dashboard)/time-tracking/page.tsx | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/app/(dashboard)/projects/page.tsx b/src/app/(dashboard)/projects/page.tsx index a6a9be1..f409c84 100644 --- a/src/app/(dashboard)/projects/page.tsx +++ b/src/app/(dashboard)/projects/page.tsx @@ -62,9 +62,10 @@ export default function ProjectsPage() { if (search) params.set("search", search) if (statusFilter !== "all") params.set("status", statusFilter) const res = await fetch(`/api/projects?${params}`) - setProjects(await res.json()) + if (res.ok) setProjects(await res.json()); else setProjects([]) } catch (e) { console.error("Failed to load projects", e) + setProjects([]) } finally { setLoading(false) } diff --git a/src/app/(dashboard)/time-tracking/page.tsx b/src/app/(dashboard)/time-tracking/page.tsx index 7a286a4..46fda53 100644 --- a/src/app/(dashboard)/time-tracking/page.tsx +++ b/src/app/(dashboard)/time-tracking/page.tsx @@ -52,11 +52,13 @@ export default function TimeTrackingPage() { fetch("/api/time-entries/summary"), fetch("/api/projects"), ]) - setEntries(await eRes.json()) - setSummary(await sRes.json()) - setProjects(await pRes.json()) + if (eRes.ok) setEntries(await eRes.json()); else setEntries([]) + if (sRes.ok) setSummary(await sRes.json()); else setSummary(null) + if (pRes.ok) setProjects(await pRes.json()); else setProjects([]) } catch (e) { console.error("Failed to load time data", e) + setEntries([]) + setProjects([]) } finally { setLoading(false) }