Fix: Enable group creation button

The group creation button should be enabled when the user has a connected WhatsApp instance. The code was updated to check if the user's instance is connected.
This commit is contained in:
gpt-engineer-app[bot] 2025-05-24 14:36:08 +00:00
parent 7ea5009fbd
commit 497c27c7f1
2 changed files with 74 additions and 21 deletions

View File

@ -39,9 +39,21 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
setCheckingInstance(true);
try {
console.log('=== VERIFICAÇÃO DE INSTÂNCIA ===');
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);
console.log('=== DADOS DA INSTÂNCIA RETORNADOS ===');
console.log('Dados completos:', JSON.stringify(instanceData, null, 2));
if (instanceData) {
console.log('=== VERIFICAÇÃO DETALHADA ===');
console.log('instancia_zap existe?', !!instanceData.instancia_zap);
console.log('instancia_zap valor:', instanceData.instancia_zap);
console.log('instancia_zap não é vazio?', instanceData.instancia_zap?.trim() !== '');
console.log('status_instancia valor:', instanceData.status_instancia);
console.log('status_instancia é "conectado"?', instanceData.status_instancia === 'conectado');
}
// LÓGICA CORRETA: Verificar se tem instância E se está conectada
const hasValidInstance = !!(
@ -51,14 +63,17 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
instanceData.status_instancia === 'conectado' // DEVE ESTAR CONECTADO
);
console.log('=== RESULTADO DA VALIDAÇÃO ===');
console.log('hasValidInstance:', hasValidInstance);
if (hasValidInstance) {
setHasWhatsAppInstance(true);
setUserInstance(instanceData);
console.log('Usuário tem instância WhatsApp conectada - liberando cadastro de grupo');
console.log('Usuário tem instância WhatsApp conectada - liberando cadastro de grupo');
} else {
setHasWhatsAppInstance(false);
setUserInstance(instanceData);
console.log('Usuário não tem instância conectada:', {
console.log('Usuário não tem instância conectada:', {
instancia_zap: instanceData?.instancia_zap,
status_instancia: instanceData?.status_instancia
});
@ -203,18 +218,36 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
</AlertDescription>
</Alert>
{/* Informações de debug */}
{/* Informações de debug DETALHADAS */}
<div className="mt-4 p-4 bg-gray-100 rounded text-sm">
<p><strong>Status da Instância:</strong></p>
<p>Email: {userEmail || 'Não definido'}</p>
<p>Instância: {userInstance?.instancia_zap || 'Não encontrada'}</p>
<p>Status: {userInstance?.status_instancia || 'Não definido'}</p>
<p>WhatsApp: {userInstance?.whatsapp || 'Não encontrado'}</p>
{userInstance?.instancia_zap && userInstance?.status_instancia !== 'conectado' && (
<p className="text-red-600 font-medium mt-2">
Instância encontrada, mas não está conectada. Status atual: {userInstance.status_instancia}
<p><strong>📊 STATUS DETALHADO DA INSTÂNCIA:</strong></p>
<div className="mt-2 space-y-1">
<p><strong>Email consultado:</strong> {userEmail || 'Não definido'}</p>
<p><strong>instancia_zap:</strong>
<span className={instanceData?.instancia_zap ? 'text-green-600' : 'text-red-600'}>
{instanceData?.instancia_zap || 'NULL/Vazio'}
</span>
</p>
)}
<p><strong>status_instancia:</strong>
<span className={instanceData?.status_instancia === 'conectado' ? 'text-green-600' : 'text-red-600'}>
{instanceData?.status_instancia || 'NULL/Vazio'}
</span>
</p>
<p><strong>whatsapp:</strong> {instanceData?.whatsapp || 'NULL/Vazio'}</p>
<div className="mt-3 p-2 bg-yellow-100 rounded">
<p><strong>🔍 VALIDAÇÕES:</strong></p>
<p> Instância existe? {instanceData ? '✅ SIM' : '❌ NÃO'}</p>
<p> instancia_zap preenchida? {(instanceData?.instancia_zap && instanceData.instancia_zap.trim() !== '') ? '✅ SIM' : '❌ NÃO'}</p>
<p> Status é "conectado"? {instanceData?.status_instancia === 'conectado' ? '✅ SIM' : '❌ NÃO'}</p>
</div>
{instanceData?.instancia_zap && instanceData?.status_instancia !== 'conectado' && (
<p className="text-red-600 font-medium mt-2">
Instância encontrada, mas não está conectada. Status atual: "{instanceData.status_instancia}"
</p>
)}
</div>
</div>
</CardContent>
</Card>

View File

@ -1,4 +1,3 @@
import { supabase } from "@/integrations/supabase/client";
/**
@ -41,30 +40,51 @@ export async function getUserWhatsAppInstance(userEmail: string): Promise<{
whatsapp: string | null;
} | null> {
try {
console.log('Buscando instância para o email:', userEmail);
console.log('🔍 getUserWhatsAppInstance - Email recebido:', userEmail);
const normalizedEmail = userEmail.trim().toLowerCase();
console.log('📧 Email normalizado:', normalizedEmail);
const { data, error } = await supabase
.from('usuarios')
.select('instancia_zap, status_instancia, whatsapp')
.eq('email', userEmail.trim().toLowerCase())
.eq('email', normalizedEmail)
.maybeSingle();
if (error) {
console.error('Erro ao buscar instância WhatsApp:', error);
console.error('Erro ao buscar instância WhatsApp:', error);
throw error;
}
console.log('Dados da instância encontrados no banco:', data);
console.log('📊 DADOS RETORNADOS DO BANCO:');
console.log('- Raw data:', JSON.stringify(data, null, 2));
// Se não encontrou dados, retorna null
if (!data) {
console.log('Nenhum usuário encontrado com o email:', userEmail);
console.log('⚠️ Nenhum usuário encontrado com o email:', normalizedEmail);
// Vamos fazer uma busca alternativa para ver se o usuário existe com email diferente
const { data: allUsers, error: allError } = await supabase
.from('usuarios')
.select('email, instancia_zap, status_instancia, whatsapp');
if (!allError && allUsers) {
console.log('📋 TODOS OS USUÁRIOS NO BANCO:');
allUsers.forEach((user, index) => {
console.log(`${index + 1}. Email: "${user.email}" | Instancia: "${user.instancia_zap}" | Status: "${user.status_instancia}"`);
});
}
return null;
}
console.log('✅ Usuário encontrado! Dados da instância:');
console.log(`- instancia_zap: "${data.instancia_zap}" (tipo: ${typeof data.instancia_zap})`);
console.log(`- status_instancia: "${data.status_instancia}" (tipo: ${typeof data.status_instancia})`);
console.log(`- whatsapp: "${data.whatsapp}" (tipo: ${typeof data.whatsapp})`);
return data;
} catch (error) {
console.error('Erro ao buscar instância WhatsApp:', error);
console.error('💥 Erro crítico ao buscar instância WhatsApp:', error);
throw error;
}
}