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 [checkingExistingInstance, setCheckingExistingInstance] = useState(true);
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;
// 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(() => {
const checkExistingInstance = async () => {
if (!userEmail) {
@ -40,18 +39,23 @@ const CreateInstanceForm = ({
}
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);
if (existingInstance && existingInstance.instancia_zap) {
console.log('Usuário já possui instância:', existingInstance.instancia_zap);
setHasExistingInstance(true);
} else {
console.log('Usuário não possui instância');
setHasExistingInstance(false);
}
console.log('📋 Dados da instância encontrados:', existingInstance);
// Verificação mais rigorosa - deve ter instancia_zap E não pode estar vazio
const hasValidInstance = !!(
existingInstance &&
existingInstance.instancia_zap &&
existingInstance.instancia_zap.trim() !== ''
);
console.log('✅ Usuário possui instância válida:', hasValidInstance);
setHasExistingInstance(hasValidInstance);
} catch (error) {
console.error('Erro ao verificar instância existente:', error);
console.error('Erro ao verificar instância existente:', error);
setHasExistingInstance(false);
} finally {
setCheckingExistingInstance(false);
@ -140,7 +144,6 @@ const CreateInstanceForm = ({
console.log('✅ Workflow ativado com sucesso no n8n');
} catch (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({
title: "Aviso",
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}
</p>
<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>
</div>
</CardContent>

View File

@ -28,23 +28,24 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
whatsapp: string | 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(() => {
const checkUserInstance = async () => {
if (!userEmail) {
console.log('Email do usuário não fornecido');
console.log('Email do usuário não fornecido');
setCheckingInstance(false);
return;
}
setCheckingInstance(true);
try {
console.log('Verificando instância para:', userEmail);
console.log('🔍 Verificando instância para criação de grupo:', userEmail);
const instanceData = await getUserWhatsAppInstance(userEmail);
console.log('Dados da instância:', instanceData);
console.log('📋 Dados da instância encontrados:', instanceData);
if (instanceData) {
// Verificação mais rigorosa: deve ter instancia_zap E status conectado
const hasValidInstance = !!(
instanceData &&
instanceData.instancia_zap &&
@ -52,7 +53,11 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
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) {
setHasWhatsAppInstance(true);
@ -62,11 +67,12 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
setUserInstance(instanceData);
}
} else {
console.log('❌ Nenhuma instância encontrada');
setHasWhatsAppInstance(false);
setUserInstance(null);
}
} 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);
setUserInstance(null);
} finally {
@ -196,8 +202,21 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
<Alert>
<AlertCircle className="h-4 w-4" />
<AlertDescription>
Para criar um grupo é necessário ter sua instância do WhatsApp conectada.
Acesse o menu "Conectar WhatsApp" e realize a conexão primeiro.
{userInstance && userInstance.instancia_zap && userInstance.status_instancia !== 'conectado' ? (
<>
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>
</Alert>
</CardContent>