Fix WhatsApp group creation logic

The logic for enabling WhatsApp group creation was not correctly recognizing when a WhatsApp instance was created, allowing users to attempt to create multiple instances. This commit addresses the issue.
This commit is contained in:
gpt-engineer-app[bot] 2025-06-21 14:38:27 +00:00
parent 4950dae761
commit be3ceeaeb2
2 changed files with 44 additions and 22 deletions

View File

@ -26,12 +26,11 @@ const CreateInstanceForm = ({
const [hasExistingInstance, setHasExistingInstance] = useState(false); const [hasExistingInstance, setHasExistingInstance] = useState(false);
const [checkingExistingInstance, setCheckingExistingInstance] = useState(true); const [checkingExistingInstance, setCheckingExistingInstance] = useState(true);
const currentUserId = localStorage.getItem('userId') || ''; const currentUserId = localStorage.getItem('userId') || '';
const userEmail = (localStorage.getItem('userEmail') || '').toLowerCase(); // Padronização obrigatória const userEmail = (localStorage.getItem('userEmail') || '').toLowerCase();
// Nome da instância será sempre o email do usuário (já padronizado)
const instanceName = userEmail; const instanceName = userEmail;
// Verificar se o usuário já tem uma instância // Verificar se o usuário já tem uma instância - verificação mais rigorosa
useEffect(() => { useEffect(() => {
const checkExistingInstance = async () => { const checkExistingInstance = async () => {
if (!userEmail) { if (!userEmail) {
@ -40,18 +39,23 @@ const CreateInstanceForm = ({
} }
try { try {
console.log('Verificando se usuário já tem instância:', userEmail); console.log('🔍 Verificando se usuário já tem instância:', userEmail);
const existingInstance = await getUserWhatsAppInstance(userEmail); const existingInstance = await getUserWhatsAppInstance(userEmail);
if (existingInstance && existingInstance.instancia_zap) { console.log('📋 Dados da instância encontrados:', existingInstance);
console.log('Usuário já possui instância:', existingInstance.instancia_zap);
setHasExistingInstance(true); // Verificação mais rigorosa - deve ter instancia_zap E não pode estar vazio
} else { const hasValidInstance = !!(
console.log('Usuário não possui instância'); existingInstance &&
setHasExistingInstance(false); existingInstance.instancia_zap &&
} existingInstance.instancia_zap.trim() !== ''
);
console.log('✅ Usuário possui instância válida:', hasValidInstance);
setHasExistingInstance(hasValidInstance);
} catch (error) { } catch (error) {
console.error('Erro ao verificar instância existente:', error); console.error('Erro ao verificar instância existente:', error);
setHasExistingInstance(false); setHasExistingInstance(false);
} finally { } finally {
setCheckingExistingInstance(false); setCheckingExistingInstance(false);
@ -140,7 +144,6 @@ const CreateInstanceForm = ({
console.log('✅ Workflow ativado com sucesso no n8n'); console.log('✅ Workflow ativado com sucesso no n8n');
} catch (workflowError) { } catch (workflowError) {
console.error('⚠️ Erro ao ativar workflow, mas instância foi criada:', workflowError); console.error('⚠️ Erro ao ativar workflow, mas instância foi criada:', workflowError);
// Não bloquear o fluxo se o workflow falhar, apenas loggar
toast({ toast({
title: "Aviso", title: "Aviso",
description: "Instância criada, mas houve um problema ao ativar a automação. Entre em contato com o suporte.", description: "Instância criada, mas houve um problema ao ativar a automação. Entre em contato com o suporte.",
@ -239,7 +242,7 @@ const CreateInstanceForm = ({
<strong> Instância ativa:</strong> {instanceName} <strong> Instância ativa:</strong> {instanceName}
</p> </p>
<p className="text-green-700 text-sm mt-1"> <p className="text-green-700 text-sm mt-1">
Para gerenciar sua instância, utilize os botões na lista de instâncias acima. Para gerenciar sua instância, utilize os botões na lista de instâncias abaixo.
</p> </p>
</div> </div>
</CardContent> </CardContent>

View File

@ -28,23 +28,24 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
whatsapp: string | null; whatsapp: string | null;
} | null>(null); } | null>(null);
// Verificar se o usuário tem instância WhatsApp CONECTADA // Verificar se o usuário tem instância WhatsApp CONECTADA - verificação mais rigorosa
useEffect(() => { useEffect(() => {
const checkUserInstance = async () => { const checkUserInstance = async () => {
if (!userEmail) { if (!userEmail) {
console.log('Email do usuário não fornecido'); console.log('Email do usuário não fornecido');
setCheckingInstance(false); setCheckingInstance(false);
return; return;
} }
setCheckingInstance(true); setCheckingInstance(true);
try { try {
console.log('Verificando instância para:', userEmail); console.log('🔍 Verificando instância para criação de grupo:', userEmail);
const instanceData = await getUserWhatsAppInstance(userEmail); const instanceData = await getUserWhatsAppInstance(userEmail);
console.log('Dados da instância:', instanceData); console.log('📋 Dados da instância encontrados:', instanceData);
if (instanceData) { if (instanceData) {
// Verificação mais rigorosa: deve ter instancia_zap E status conectado
const hasValidInstance = !!( const hasValidInstance = !!(
instanceData && instanceData &&
instanceData.instancia_zap && instanceData.instancia_zap &&
@ -52,7 +53,11 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
instanceData.status_instancia === 'conectado' instanceData.status_instancia === 'conectado'
); );
console.log('Instância válida:', hasValidInstance); console.log('✅ Instância válida para criar grupos:', hasValidInstance, {
instancia_zap: instanceData.instancia_zap,
status_instancia: instanceData.status_instancia,
hasValidInstance
});
if (hasValidInstance) { if (hasValidInstance) {
setHasWhatsAppInstance(true); setHasWhatsAppInstance(true);
@ -62,11 +67,12 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
setUserInstance(instanceData); setUserInstance(instanceData);
} }
} else { } else {
console.log('❌ Nenhuma instância encontrada');
setHasWhatsAppInstance(false); setHasWhatsAppInstance(false);
setUserInstance(null); setUserInstance(null);
} }
} catch (error) { } catch (error) {
console.error('Erro ao verificar instância do usuário:', error); console.error('Erro ao verificar instância do usuário:', error);
setHasWhatsAppInstance(false); setHasWhatsAppInstance(false);
setUserInstance(null); setUserInstance(null);
} finally { } finally {
@ -196,8 +202,21 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
<Alert> <Alert>
<AlertCircle className="h-4 w-4" /> <AlertCircle className="h-4 w-4" />
<AlertDescription> <AlertDescription>
Para criar um grupo é necessário ter sua instância do WhatsApp conectada. {userInstance && userInstance.instancia_zap && userInstance.status_instancia !== 'conectado' ? (
Acesse o menu "Conectar WhatsApp" e realize a conexão primeiro. <>
Sua instância WhatsApp está <strong>desconectada</strong>.
Acesse o menu "Conectar WhatsApp" e escaneie o QR Code para conectar sua instância.
<br />
<span className="text-sm text-gray-600 mt-2 block">
Status atual: {userInstance.status_instancia}
</span>
</>
) : (
<>
Para criar um grupo é necessário ter sua instância do WhatsApp conectada.
Acesse o menu "Conectar WhatsApp" e realize a conexão primeiro.
</>
)}
</AlertDescription> </AlertDescription>
</Alert> </Alert>
</CardContent> </CardContent>