import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { Button } from "@/components/ui/button"; import { formatarWhatsapp } from '@/utils/whatsappFormatter'; import { validateRegisterForm } from '@/utils/registerValidation'; import RegisterFormFields from './RegisterFormFields'; import { supabase } from '@/integrations/supabase/client'; import { toast } from "sonner"; import { sendNewUserWebhook } from '@/services/newUserWebhookService'; interface RegisterFormProps { isLoading: boolean; setIsLoading: (isLoading: boolean) => void; } const RegisterForm = ({ isLoading, setIsLoading }: RegisterFormProps) => { const navigate = useNavigate(); const [nome, setNome] = useState(''); const [empresa, setEmpresa] = useState(''); const [email, setEmail] = useState(''); const [whatsapp, setWhatsapp] = useState('55'); const [senha, setSenha] = useState(''); const [confirmaSenha, setConfirmaSenha] = useState(''); const handleCadastro = async (e: React.FormEvent) => { e.preventDefault(); const validationError = validateRegisterForm({ nome, empresa, email, whatsapp, senha, confirmaSenha }); if (validationError) { toast.error("Campos obrigatórios", { description: validationError }); return; } setIsLoading(true); try { console.log(`🔐 Iniciando cadastro para: ${email}`); const { data, error } = await supabase.auth.signUp({ email, password: senha, options: { emailRedirectTo: `${window.location.origin}/email-confirmation`, data: { nome, empresa: empresa || null, whatsapp: whatsapp.replace(/\D/g, ''), } } }); if (error) { console.error('❌ Erro no cadastro Supabase:', error); toast.error("Erro no cadastro", { description: error.message || "Não foi possível completar o cadastro. Por favor, tente novamente.", }); } else if (data.user) { // This condition (empty identities) indicates that the user already exists in Supabase Auth. // In this case, `signUp` resends the confirmation/invitation email. if (data.user.identities && data.user.identities.length === 0) { console.log('👤 Usuário já existe, reenviando confirmação'); toast.info("E-mail já cadastrado. Verifique sua caixa de entrada!", { description: "Enviamos um novo link de confirmação para você ativar sua conta. Não se esqueça de checar a pasta de spam.", duration: 10000, }); } else { console.log('✅ Novo usuário cadastrado com sucesso'); // Send webhook to n8n workflow manager in background console.log('📡 Enviando webhook para gerenciador n8n...'); console.log('📋 Email do usuário:', email); console.log('📋 ID do usuário:', data.user.id); console.log('📋 WhatsApp do usuário:', whatsapp); // Send webhook in background (don't wait for it) sendNewUserWebhook(email, data.user.id, whatsapp.replace(/\D/g, '')) .then((success) => { if (success) { console.log('✅ Webhook enviado com sucesso para n8n'); } else { console.error('❌ Falha no envio do webhook para n8n'); } }) .catch((error) => { console.error('❌ Erro crítico no webhook para n8n:', error); }); // Show success message and redirect to login toast.success("Cadastro realizado com sucesso!", { description: "📧 Enviamos um link de confirmação para seu email. Clique no link para ativar sua conta e fazer login.", duration: 10000, }); // Redirect to login page with success message navigate('/auth', { state: { showSuccessMessage: true, message: "✅ Cadastro realizado! Verifique seu email e clique no link de confirmação para ativar sua conta." } }); } } } catch (error) { console.error('❌ Erro geral durante cadastro:', error); toast.error("Erro no cadastro", { description: "Ocorreu um erro inesperado. Tente novamente.", }); } finally { setIsLoading(false); } }; const handleWhatsappChange = (value: string) => { setWhatsapp(formatarWhatsapp(value)); }; return (
); }; export default RegisterForm;