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:
parent
4950dae761
commit
be3ceeaeb2
@ -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>
|
||||||
|
|||||||
@ -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>
|
||||||
|
{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.
|
Para criar um grupo é necessário ter sua instância do WhatsApp conectada.
|
||||||
Acesse o menu "Conectar WhatsApp" e realize a conexão primeiro.
|
Acesse o menu "Conectar WhatsApp" e realize a conexão primeiro.
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</AlertDescription>
|
</AlertDescription>
|
||||||
</Alert>
|
</Alert>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user