From 091fc24d9076297c323691e413ab2857f034c4eb Mon Sep 17 00:00:00 2001 From: Chever John Date: Tue, 30 Jun 2026 02:13:37 +0800 Subject: [PATCH] fix: handle plans list API returning array format in usePlanData hook The /purchaser/plans API returns data as a plain array, but usePlanData destructured res.data expecting {plans, factories, plan_factories, operator_names}. This caused the PlanOverview page to render nothing despite receiving data. Co-Authored-By: Claude --- src/hooks/usePlanData.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/hooks/usePlanData.ts b/src/hooks/usePlanData.ts index db53674..3fd2fa7 100644 --- a/src/hooks/usePlanData.ts +++ b/src/hooks/usePlanData.ts @@ -79,7 +79,15 @@ export function usePlanData({ companyId, pageSize = PAGINATION_CONFIG.defaultPag try { const res = await purchaserApi.listPlans({ page, page_size: pageSize }); - const { plans: planDetails, factories, plan_factories, operator_names } = res.data; + const rawData = res.data; + + // API returns plain array when backend doesn't wrap in object + const planDetails: PlanDetail[] = Array.isArray(rawData) + ? rawData + : (rawData?.plans || []); + const factories: Company[] = Array.isArray(rawData) ? [] : (rawData?.factories || []); + const plan_factories: PlanFactory[] = Array.isArray(rawData) ? [] : (rawData?.plan_factories || []); + const operator_names: Record = Array.isArray(rawData) ? {} : (rawData?.operator_names || {}); const plansWithSteps = planDetails.map(mapPlanDetail);