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 <noreply@anthropic.com>
This commit is contained in:
Chever John 2026-06-30 02:13:37 +08:00
parent c641831251
commit 091fc24d90
No known key found for this signature in database
GPG Key ID: 2894D52ED1211DF0

View File

@ -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<string, string> = Array.isArray(rawData) ? {} : (rawData?.operator_names || {});
const plansWithSteps = planDetails.map(mapPlanDetail);