diff --git a/src/App.tsx b/src/App.tsx index a2c257b..a523905 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -90,6 +90,22 @@ function App() { return () => window.removeEventListener('scroll', handleScroll); }, [lastScrollY]); + // Restore offset order state when navigating to calculator page + // This handles browser back from Stripe checkout + useEffect(() => { + if (currentPage === 'calculator' && savedState && savedState.showOffsetOrder) { + console.log('[State Restoration] Restoring offset order state from localStorage'); + console.log('[State Restoration] Offset tons:', savedState.offsetTons); + console.log('[State Restoration] Monetary amount:', savedState.monetaryAmount); + console.log('[State Restoration] Calculator type:', savedState.calculatorTypeUsed); + + setShowOffsetOrder(true); + setOffsetTons(savedState.offsetTons || 0); + setMonetaryAmount(savedState.monetaryAmount); + setCalculatorType(savedState.calculatorTypeUsed || 'trip'); + } + }, [currentPage, savedState]); + const handleSearch = async (imo: string) => { setLoading(true); setError(null); diff --git a/src/pages/CheckoutCancel.tsx b/src/pages/CheckoutCancel.tsx index d09cc4d..7731a2c 100644 --- a/src/pages/CheckoutCancel.tsx +++ b/src/pages/CheckoutCancel.tsx @@ -1,5 +1,4 @@ import { motion } from 'framer-motion'; -import { useEffect } from 'react'; interface CheckoutCancelProps { onNavigateHome: () => void; @@ -10,15 +9,8 @@ export default function CheckoutCancel({ onNavigateHome, onNavigateCalculator }: CheckoutCancelProps) { - // Automatically redirect to calculator on mount - useEffect(() => { - // Small delay to ensure smooth transition - const timer = setTimeout(() => { - onNavigateCalculator(); - }, 100); - - return () => clearTimeout(timer); - }, [onNavigateCalculator]); + // Note: Removed auto-redirect to allow offset order state restoration to work + // User can manually click "Try Again" to return to calculator return (