diff --git a/src/App.tsx b/src/App.tsx index c3b8baf..d52fbc6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -76,6 +76,7 @@ const AppContent: React.FC = () => { const handleOpenRegister = (plan: string = 'starter') => { setSelectedPlan(plan); + localStorage.removeItem('intended_plan'); // Segurança contra redirecionamentos não desejados setAuthMode('register'); setIsModalOpen(true); }; @@ -86,20 +87,25 @@ const AppContent: React.FC = () => { } else { localStorage.setItem('login_intent', 'user'); } + localStorage.removeItem('intended_plan'); // Segurança contra redirecionamentos não desejados setAuthMode('login'); setIsModalOpen(true); }; const handleAuthSuccess = async () => { - setIsModalOpen(false); - await refreshProfile(); - // Recupera a intenção de plano caso tenha recarregado a página (ex: Login via Google) const savedPlan = localStorage.getItem('intended_plan'); const finalPlan = selectedPlan === 'monthly' ? 'monthly' : savedPlan; + const isRedirecting = (authMode === 'register' || isCompletingProfile) && finalPlan === 'monthly'; + + if (!isRedirecting) { + setIsModalOpen(false); + } + + await refreshProfile(); // Se acabou de fazer o cadastro clicando em um plano pago (monthly), leva direto pro Stripe! - if ((authMode === 'register' || isCompletingProfile) && finalPlan === 'monthly') { + if (isRedirecting) { try { const { data: { session } } = await supabase.auth.getSession(); if (session) { @@ -113,16 +119,19 @@ const AppContent: React.FC = () => { }); const { url, error } = await res.json(); if (error) { + setIsModalOpen(false); alert('Falha interna ao inicializar carrinho: ' + JSON.stringify(error)); } else if (url) { localStorage.removeItem('intended_plan'); - window.location.href = url; // Redireciona pro Checkout + window.location.href = url; // Redireciona pro Checkout magicamente return; } } else { + setIsModalOpen(false); alert('Sessão não encontrada para redirecionamento. Verifique se precisa confirmar o email.'); } } catch (e) { + setIsModalOpen(false); console.error("Falha ao redirecionar para o checkout:", e); alert('Erro ao comunicar com o servidor: ' + e); } diff --git a/src/components/modals/RegistrationModal.tsx b/src/components/modals/RegistrationModal.tsx index f375b91..bc17a62 100644 --- a/src/components/modals/RegistrationModal.tsx +++ b/src/components/modals/RegistrationModal.tsx @@ -179,7 +179,11 @@ const RegistrationModal: React.FC = ({ if (rpcError) throw rpcError; - setSuccessMsg(t.auth.successRegister); + if (plan === 'monthly') { + setSuccessMsg("Conta criada com sucesso! Redirecionando para o pagamento seguro..."); + } else { + setSuccessMsg(t.auth.successRegister); + } setTimeout(() => onSuccess(), 1500); return; }