Add typeof window checks for sessionStorage access in checkout

Prevents ReferenceError when sessionStorage is accessed during SSR or
server-side rendering contexts. Wraps all sessionStorage calls in
typeof window !== 'undefined' checks.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Andymick
2026-07-18 06:38:01 +01:00
co-authored by Claude Haiku 4.5
parent 570be6430c
commit 6c1053e985
+12 -4
View File
@@ -56,7 +56,9 @@ export default function CheckoutPageClient({ isLoggedIn, customer }: CheckoutPag
setCheckoutError(null);
try {
// Mark that we're checking out so LogoutOnUnload doesn't clear cart
sessionStorage.setItem('isCheckingOut', 'true');
if (typeof window !== 'undefined') {
sessionStorage.setItem('isCheckingOut', 'true');
}
const res = await fetch('/api/checkout', {
method: 'POST',
@@ -73,7 +75,9 @@ export default function CheckoutPageClient({ isLoggedIn, customer }: CheckoutPag
});
const data = await res.json();
if (!res.ok || !data.url) {
sessionStorage.removeItem('isCheckingOut');
if (typeof window !== 'undefined') {
sessionStorage.removeItem('isCheckingOut');
}
throw new Error(data.error ?? 'Something went wrong starting checkout.');
}
window.location.href = data.url;
@@ -122,7 +126,9 @@ export default function CheckoutPageClient({ isLoggedIn, customer }: CheckoutPag
setCheckoutError(null);
try {
// Mark that we're checking out so LogoutOnUnload doesn't clear cart
sessionStorage.setItem('isCheckingOut', 'true');
if (typeof window !== 'undefined') {
sessionStorage.setItem('isCheckingOut', 'true');
}
const res = await fetch('/api/checkout', {
method: 'POST',
@@ -132,7 +138,9 @@ export default function CheckoutPageClient({ isLoggedIn, customer }: CheckoutPag
const data = await res.json();
console.log('Checkout response:', { status: res.status, ok: res.ok, data });
if (!res.ok || !data.url) {
sessionStorage.removeItem('isCheckingOut');
if (typeof window !== 'undefined') {
sessionStorage.removeItem('isCheckingOut');
}
throw new Error(data.error ?? 'Something went wrong starting checkout.');
}
window.location.href = data.url;