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); setCheckingInstance(true);
try { try {
console.log('=== VERIFICAÇÃO DE INSTÂNCIA ===');
console.log('Verificando instância para o usuário:', userEmail); console.log('Verificando instância para o usuário:', userEmail);
const instanceData = await getUserWhatsAppInstance(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 // LÓGICA CORRETA: Verificar se tem instância E se está conectada
const hasValidInstance = !!( const hasValidInstance = !!(
@ -51,14 +63,17 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
instanceData.status_instancia === 'conectado' // DEVE ESTAR CONECTADO instanceData.status_instancia === 'conectado' // DEVE ESTAR CONECTADO
); );
console.log('=== RESULTADO DA VALIDAÇÃO ===');
console.log('hasValidInstance:', hasValidInstance);
if (hasValidInstance) { if (hasValidInstance) {
setHasWhatsAppInstance(true); setHasWhatsAppInstance(true);
setUserInstance(instanceData); 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 { } else {
setHasWhatsAppInstance(false); setHasWhatsAppInstance(false);
setUserInstance(instanceData); 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, instancia_zap: instanceData?.instancia_zap,
status_instancia: instanceData?.status_instancia status_instancia: instanceData?.status_instancia
}); });
@ -203,19 +218,37 @@ const CreateGroupForm = ({ userEmail, onSuccess }: CreateGroupFormProps) => {
</AlertDescription> </AlertDescription>
</Alert> </Alert>
{/* Informações de debug */} {/* Informações de debug DETALHADAS */}
<div className="mt-4 p-4 bg-gray-100 rounded text-sm"> <div className="mt-4 p-4 bg-gray-100 rounded text-sm">
<p><strong>Status da Instância:</strong></p> <p><strong>📊 STATUS DETALHADO DA INSTÂNCIA:</strong></p>
<p>Email: {userEmail || 'Não definido'}</p> <div className="mt-2 space-y-1">
<p>Instância: {userInstance?.instancia_zap || 'Não encontrada'}</p> <p><strong>Email consultado:</strong> {userEmail || 'Não definido'}</p>
<p>Status: {userInstance?.status_instancia || 'Não definido'}</p> <p><strong>instancia_zap:</strong>
<p>WhatsApp: {userInstance?.whatsapp || 'Não encontrado'}</p> <span className={instanceData?.instancia_zap ? 'text-green-600' : 'text-red-600'}>
{userInstance?.instancia_zap && userInstance?.status_instancia !== 'conectado' && ( {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"> <p className="text-red-600 font-medium mt-2">
Instância encontrada, mas não está conectada. Status atual: {userInstance.status_instancia} Instância encontrada, mas não está conectada. Status atual: "{instanceData.status_instancia}"
</p> </p>
)} )}
</div> </div>
</div>
</CardContent> </CardContent>
</Card> </Card>
); );

View File

@ -1,4 +1,3 @@
import { supabase } from "@/integrations/supabase/client"; import { supabase } from "@/integrations/supabase/client";
/** /**
@ -41,30 +40,51 @@ export async function getUserWhatsAppInstance(userEmail: string): Promise<{
whatsapp: string | null; whatsapp: string | null;
} | null> { } | null> {
try { 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 const { data, error } = await supabase
.from('usuarios') .from('usuarios')
.select('instancia_zap, status_instancia, whatsapp') .select('instancia_zap, status_instancia, whatsapp')
.eq('email', userEmail.trim().toLowerCase()) .eq('email', normalizedEmail)
.maybeSingle(); .maybeSingle();
if (error) { if (error) {
console.error('Erro ao buscar instância WhatsApp:', error); console.error('Erro ao buscar instância WhatsApp:', error);
throw 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) { 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; 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; return data;
} catch (error) { } catch (error) {
console.error('Erro ao buscar instância WhatsApp:', error); console.error('💥 Erro crítico ao buscar instância WhatsApp:', error);
throw error; throw error;
} }
} }