diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 3afad14..8a5ac49 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -64,7 +64,8 @@ "Bash(git status *)", "Bash(git revert *)", "Bash(git commit -m 'Fix price display issues and layout in design review page *)", - "Bash(git commit -m 'Fix: Calculate effectivePrice in design API endpoints *)" + "Bash(git commit -m 'Fix: Calculate effectivePrice in design API endpoints *)", + "Bash(git commit -m 'Fix: Handle designJson as string in checkout API *)" ] } } diff --git a/src/app/api/checkout/route.ts b/src/app/api/checkout/route.ts index 5b811cf..f3b845e 100644 --- a/src/app/api/checkout/route.ts +++ b/src/app/api/checkout/route.ts @@ -78,8 +78,8 @@ export async function POST(req: Request) { const activePromotions = await fetchActivePromotions(); const pricedItems = items.map((i) => { - const design = i.designJson as { front: unknown[]; back: unknown[] }; - const isPersonalised = design.front.length > 0 || design.back.length > 0; + const design = typeof i.designJson === 'string' ? JSON.parse(i.designJson) : i.designJson; + const isPersonalised = (design.front?.length ?? 0) > 0 || (design.back?.length ?? 0) > 0; return { ...i, unitPrice: getEffectivePrice(productsById.get(i.productId)!, activePromotions, new Date(), isPersonalised).price,