Commit Graph
13 Commits
Author SHA1 Message Date
AndymickandClaude Haiku 4.5 313943aeaa Commit design approval workflow and related features
- Add design approval workflow components and API routes
- Update checkout process for design approval integration
- Add admin navigation for design management
- Update mail utilities for design notifications
- Update types for design approval system
- Update Prisma schema for design approval database

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-18 15:42:30 +01:00
Andymick bda02c4add Add error handling to success page database queries 2026-07-18 10:23:34 +01:00
Andymick 095e8ad459 Add error handling to checkout page database queries 2026-07-18 10:08:08 +01:00
AndymickandClaude Haiku 4.5 eff9a72409 Improve debug logging for checkout flow
Add emoji-prefixed logs to make debugging easier:
- 💳 Checkout button clicked
- ✓ Flag set/skipped actions
- 🚪 LogoutOnUnload handler
- 📡 API fetch
- 📦 API response
- 🔗 Stripe redirect
- 🗑️ Cart clearing

This makes it much easier to see the flow in the console.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-18 06:59:59 +01:00
AndymickandClaude Haiku 4.5 7434b68a79 Add debug logging for checkout and LogoutOnUnload
Add console logs to track:
- When isCheckingOut flag is set in checkout button
- When LogoutOnUnload handleUnload is called
- Whether isCheckingOut flag is detected
- When redirecting to Stripe URL

This helps diagnose why cart is still being cleared during checkout.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-18 06:53:56 +01:00
AndymickandClaude Haiku 4.5 6c1053e985 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>
2026-07-18 06:38:01 +01:00
AndymickandClaude Haiku 4.5 570be6430c 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 <noreply@anthropic.com>
2026-07-18 06:28:47 +01:00
AndymickandClaude Haiku 4.5 eda518d1be Fix cart clearing during Stripe checkout redirect
Use sessionStorage flag to prevent LogoutOnUnload from clearing cart and logging
out when navigating to Stripe checkout.

Changes:
- Checkout button sets 'isCheckingOut' flag in sessionStorage before API call
- LogoutOnUnload checks this flag and skips logout if checkout in progress
- Flag is removed if API returns an error
- Flag persists during navigation to Stripe URL

This ensures cart and login persist through Stripe payment flow.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-18 06:25:30 +01:00
AndymickandClaude Haiku 4.5 3d48e4d545 Add comprehensive logging to debug checkout issues
Added console.log statements to track:
- Client: API response status, data, and errors
- Server: Stripe configuration check, rate limiting, order creation, Stripe session creation

This will help identify exactly where the checkout flow is failing.

Check browser console for client-side errors and server logs for API errors.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-18 06:13:15 +01:00
AndymickandClaude Haiku 4.5 db1ca73827 Fix checkout loop issue caused by type mismatch in mode state
Critical fix: Update mode state type to include 'logged-in'.

The mode state was initialized with 'logged-in' but the TypeScript type
only allowed 'login' | 'guest' | null, causing the checkout flow to behave
unexpectedly and loop/clear the cart.

Type changed from:
  useState<'login' | 'guest' | null>(...)
To:
  useState<'logged-in' | 'login' | 'guest' | null>(...)

This fixes the checkout issue where customers couldn't complete purchases.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-18 06:06:29 +01:00
AndymickandClaude Haiku 4.5 a2908e8ae1 Fix checkout page to hide login prompt when user is logged in
- Refactor checkout page into server component (page.tsx) + client component (client.tsx)
- Server component checks getCurrentCustomer() and passes isLoggedIn prop
- When logged in, show direct checkout button instead of login/guest options
- When not logged in, show login/guest choice as before
- Hides the 'Your cart will be saved...' message from logged-in users

Fixes: Login/guest prompt appearing even when user is already authenticated

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-17 22:26:14 +01:00
AndymickandClaude Haiku 4.5 8edb5e1f5b Add guest checkout and admin login link
- Add guest checkout flow: customers can now complete orders without creating an account
  - New /checkout page with login or guest options
  - Guest form collects: full name, email, phone, address
  - Orders track guest info via guestName and guestPhone fields
- Update cart message to reflect guest option
- Add "Admin login" link to customer login page for clear navigation
- Update checkout API to accept and store guest information

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-16 20:10:42 +01:00
Andymick 41937ffc15 Initial commit: Craft2Prints with Stages 1-3 2026-07-15 18:09:59 +01:00