From 570be6430cd2c3d7a9d365883f8e75a632353b74 Mon Sep 17 00:00:00 2001 From: Andymick Date: Sat, 18 Jul 2026 06:28:47 +0100 Subject: [PATCH] Add isCheckingOut flag to guest checkout flow Guest checkout handler was missing the sessionStorage flag that prevents LogoutOnUnload from clearing cart during Stripe redirect. Adds flag before API call and removes on error. Co-Authored-By: Claude Haiku 4.5 --- src/app/checkout/client.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/checkout/client.tsx b/src/app/checkout/client.tsx index 22d3366..3199a2e 100644 --- a/src/app/checkout/client.tsx +++ b/src/app/checkout/client.tsx @@ -55,6 +55,9 @@ export default function CheckoutPageClient({ isLoggedIn, customer }: CheckoutPag setCheckingOut(true); setCheckoutError(null); try { + // Mark that we're checking out so LogoutOnUnload doesn't clear cart + sessionStorage.setItem('isCheckingOut', 'true'); + const res = await fetch('/api/checkout', { method: 'POST', headers: { 'Content-Type': 'application/json' }, @@ -70,6 +73,7 @@ export default function CheckoutPageClient({ isLoggedIn, customer }: CheckoutPag }); const data = await res.json(); if (!res.ok || !data.url) { + sessionStorage.removeItem('isCheckingOut'); throw new Error(data.error ?? 'Something went wrong starting checkout.'); } window.location.href = data.url;