diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 584ca81..0dafd3b 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -68,7 +68,8 @@ "Bash(git commit -m 'Fix: Handle designJson as string in checkout API *)", "Bash(git commit -m 'Fix: Use personalised price in design approval cart add *)", "Bash(git commit -m 'Fix: Safely access designJson properties in admin orders page *)", - "Bash(git commit -m 'Fix: Show personalised price on design review page *)" + "Bash(git commit -m 'Fix: Show personalised price on design review page *)", + "Bash(git commit -m 'Fix: Safely parse designJson in admin order detail page *)" ] } } diff --git a/src/app/admin/orders/[id]/page.tsx b/src/app/admin/orders/[id]/page.tsx index c2100d6..f37eadc 100644 --- a/src/app/admin/orders/[id]/page.tsx +++ b/src/app/admin/orders/[id]/page.tsx @@ -78,9 +78,15 @@ export default async function OrderDetailPage({ params }: { params: { id: string
{order.items.map((item) => { - const design = JSON.parse(item.designJson) as { front: unknown[]; back: unknown[] }; - const hasFrontDesign = design.front.length > 0; - const hasBackDesign = design.back.length > 0; + let hasFrontDesign = false; + let hasBackDesign = false; + try { + const design = JSON.parse(item.designJson) as { front: unknown[]; back: unknown[] }; + hasFrontDesign = (design.front?.length ?? 0) > 0; + hasBackDesign = (design.back?.length ?? 0) > 0; + } catch { + // If parsing fails, assume no custom design + } const frontPlacement = item.placementPreviewUrl || item.designPreviewUrl; return (