From c64183125164564440747d6f8ef8091d1bc59b10 Mon Sep 17 00:00:00 2001 From: Chever John Date: Tue, 30 Jun 2026 02:07:18 +0800 Subject: [PATCH] fix: handle plans API returning array instead of {plans:[]} object The purchaser plans endpoint returns data as a plain array, not wrapped in {plans:[...]}. Added Array.isArray check to handle both formats. Co-Authored-By: Claude --- src/hooks/useDashboardData.ts | 3 ++- src/pages/purchaser/Dashboard.tsx | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/hooks/useDashboardData.ts b/src/hooks/useDashboardData.ts index ce25eb9..5661be2 100644 --- a/src/hooks/useDashboardData.ts +++ b/src/hooks/useDashboardData.ts @@ -47,7 +47,8 @@ export function useDashboardData({ purchaserApi.dashboardStats(), purchaserApi.listPlans(), ]); - const plans = (plansRes.data?.plans || []) as unknown as T[]; + const rawData = plansRes.data; + const plans = (Array.isArray(rawData) ? rawData : (rawData?.plans || [])) as unknown as T[]; const stats: DashboardStats = { all: statsData.total_plans ?? 0, producing: statsData.producing_plans ?? 0, diff --git a/src/pages/purchaser/Dashboard.tsx b/src/pages/purchaser/Dashboard.tsx index 1d92c3f..d331076 100644 --- a/src/pages/purchaser/Dashboard.tsx +++ b/src/pages/purchaser/Dashboard.tsx @@ -89,7 +89,9 @@ export function PurchaserDashboard() { const fetchPlans = async () => { try { const res = await purchaserApi.listPlans(); - const allPlans = res.data?.plans || []; + // API may return {plans: [...]} object or plain array + const rawData = res.data; + const allPlans = Array.isArray(rawData) ? rawData : (rawData?.plans || []); const filteredPlans = allPlans.filter(p => !p.process_steps?.some(s => s.status === STEP_STATUS.REJECTED)