import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Loader2, Plus, AlertCircle } from 'lucide-react'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { findOrCreateWhatsAppGroup } from '@/services/whatsAppGroupsService'; import { getUserWhatsAppInstance } from '@/services/whatsAppInstanceService'; import { createWhatsAppGroup, updateGroupRemoteJid } from '@/services/whatsAppGroupCreationService'; import { useToast } from '@/hooks/use-toast'; interface CreateGroupFormProps { userEmail: string; onSuccess: () => void; } const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => { const { toast } = useToast(); const [cadastrando, setCadastrando] = useState(false); const [nomeGrupo, setNomeGrupo] = useState(''); const [hasWhatsAppInstance, setHasWhatsAppInstance] = useState(false); const [checkingInstance, setCheckingInstance] = useState(true); const [userInstance, setUserInstance] = useState<{ instancia_zap: string | null; status_instancia: string | null; whatsapp: string | null; } | null>(null); // Verificar se o usuário tem instância WhatsApp useEffect(() => { const checkUserInstance = async () => { if (!userEmail) { console.log('Email do usuário não fornecido'); setCheckingInstance(false); return; } setCheckingInstance(true); try { console.log('Verificando instância para o usuário:', userEmail); const instanceData = await getUserWhatsAppInstance(userEmail); console.log('Dados da instância do usuário:', instanceData); if (instanceData && instanceData.instancia_zap && instanceData.instancia_zap.trim() !== '' && instanceData.whatsapp && instanceData.whatsapp.trim() !== '') { setHasWhatsAppInstance(true); setUserInstance(instanceData); console.log('Usuário tem instância WhatsApp válida'); } else { setHasWhatsAppInstance(false); setUserInstance(null); console.log('Usuário não tem instância WhatsApp válida ou dados estão incompletos'); } } catch (error) { console.error('Erro ao verificar instância do usuário:', error); setHasWhatsAppInstance(false); setUserInstance(null); } finally { setCheckingInstance(false); } }; checkUserInstance(); }, [userEmail]); // Cadastrar novo grupo const handleCadastrarGrupo = async () => { if (!userEmail) { toast({ title: 'Erro', description: 'Você precisa estar logado para cadastrar um grupo', variant: 'destructive', }); return; } if (!nomeGrupo.trim()) { toast({ title: 'Atenção', description: 'Digite um nome para o grupo', variant: 'destructive', }); return; } if (!userInstance || !userInstance.instancia_zap || !userInstance.whatsapp) { toast({ title: 'Erro', description: 'Dados da instância WhatsApp não encontrados', variant: 'destructive', }); return; } setCadastrando(true); try { console.log("Iniciando processo de cadastro de grupo..."); // 1. Cadastrar grupo no banco de dados local const grupo = await findOrCreateWhatsAppGroup(nomeGrupo.trim()); if (!grupo) { throw new Error('Não foi possível cadastrar o grupo no banco de dados'); } // 2. Criar grupo no WhatsApp via API try { const groupResponse = await createWhatsAppGroup( userInstance.instancia_zap, userEmail, userInstance.whatsapp ); console.log('Resposta da criação do grupo:', groupResponse); // 3. Atualizar remote_jid no banco de dados if (groupResponse.id) { await updateGroupRemoteJid(grupo.id, groupResponse.id); toast({ title: 'Sucesso!', description: `Grupo "${groupResponse.subject}" criado com sucesso no seu WhatsApp!`, variant: 'default', }); } else { toast({ title: 'Atenção', description: 'Grupo cadastrado no sistema, mas não foi possível criar no WhatsApp', variant: 'destructive', }); } } catch (apiError) { console.error('Erro ao criar grupo via API:', apiError); toast({ title: 'Atenção', description: 'Grupo cadastrado no sistema, mas houve erro ao criar no WhatsApp. Verifique sua conexão.', variant: 'destructive', }); } // Resetar o campo de nome setNomeGrupo(''); // Atualizar a lista de grupos onSuccess(); } catch (error) { console.error('Erro ao cadastrar grupo:', error); let errorMsg = 'Erro desconhecido'; if (error instanceof Error) { errorMsg = error.message; } toast({ title: 'Erro', description: `Não foi possível registrar o grupo: ${errorMsg}`, variant: 'destructive', }); } finally { setCadastrando(false); } }; if (checkingInstance) { return ( Verificando instância WhatsApp... ); } if (!hasWhatsAppInstance) { return ( Cadastrar novo grupo Para criar um grupo é necessário ter uma instância do WhatsApp conectada Para criar um grupo é necessário cadastrar e conectar sua instância do WhatsApp. Acesse o menu de conexão e realize este processo primeiro. {/* Debug info para ajudar a identificar o problema */}

Debug Info:

Email: {userEmail || 'Não definido'}

Instância: {userInstance?.instancia_zap || 'Não encontrada'}

WhatsApp: {userInstance?.whatsapp || 'Não encontrado'}

Status: {userInstance?.status_instancia || 'Não definido'}

); } return ( Cadastrar novo grupo Preencha as informações abaixo para cadastrar um novo grupo do WhatsApp {/* Mostrar informações da instância conectada */}

✓ Instância conectada: {userInstance?.instancia_zap}

Status: {userInstance?.status_instancia}

setNomeGrupo(e.target.value)} />

Digite um nome descritivo para o grupo que você irá criar

Informações importantes:

  • O grupo será criado automaticamente no seu WhatsApp
  • Você será adicionado como participante do grupo
  • O grupo terá o nome: FinDash - {userEmail.split('@')[0]}
); }; export default CreateGroupForm;