diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 34486e63..383724c5 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -230,6 +230,10 @@ const InitialRouteHandler: React.FC = () => { return () => clearTimeout(timeoutId); }, []); // Remove checkSubscription dependency to prevent loop + // Handle post-Stripe-checkout redirect in demo mode + const urlParams = new URLSearchParams(location.search); + const isCheckoutSuccess = urlParams.get('subscription') === 'success'; + // Initialize onboarding only after subscription is confirmed useEffect(() => { if (subscription && !subscriptionLoading) { @@ -247,8 +251,7 @@ const InitialRouteHandler: React.FC = () => { console.log('InitialRouteHandler: Subscription confirmed, initializing onboarding...'); // Handle post-Stripe-checkout redirect in demo mode - const urlParams = new URLSearchParams(location.search); - if (urlParams.get('subscription') === 'success' && shouldSkipOnboarding()) { + if (isCheckoutSuccess && shouldSkipOnboarding()) { console.log('InitialRouteHandler: Stripe checkout success in demo mode → Podcast Maker'); return ; } @@ -256,7 +259,13 @@ const InitialRouteHandler: React.FC = () => { initializeOnboarding(); } } - }, [subscription, subscriptionLoading, initializeOnboarding, location.search]); + }, [subscription, subscriptionLoading, initializeOnboarding, isCheckoutSuccess]); + + // Early return for checkout success in demo mode + if (isCheckoutSuccess && subscription?.active && shouldSkipOnboarding()) { + console.log('InitialRouteHandler: Early redirect - Stripe checkout success in demo mode → Podcast Maker'); + return ; + } // Handle connection error - show connection error page if (connectionError.hasError) {