budget-view-finance/src/services/whatsAppInstanceService.ts
gpt-engineer-app[bot] a9769b76db Fix: Inconsistent WhatsApp instance detection
Unifies instance verification logic using `useExistingInstanceCheck` across components, corrects the Supabase query, and adds re-verification after instance creation to resolve inconsistencies in WhatsApp instance detection and group creation.
2025-06-21 16:19:14 +00:00

79 lines
2.5 KiB
TypeScript

import { supabase } from '@/integrations/supabase/client';
/**
* Busca os dados da instância de um usuário na tabela 'usuarios'.
* Retorna o primeiro registro encontrado ou null se não houver.
*
* @param userEmail O e-mail do usuário para buscar.
* @returns Um objeto com os dados da instância ou null.
*/
export const getUserWhatsAppInstance = async (userEmail: string) => {
if (!userEmail) {
console.error('[SERVICE_ERROR] getUserWhatsAppInstance chamado sem userEmail.');
return null;
}
console.log(`[SERVICE] Buscando instância no DB para: ${userEmail}`);
// A query correta para buscar os dados
const { data, error } = await supabase
.from('usuarios') // Nome da sua tabela
.select('instancia_zap, status_instancia, whatsapp') // Seleciona apenas as colunas que precisamos
.eq('email', userEmail) // Filtra pelo e-mail do usuário logado
.maybeSingle(); // Retorna um único objeto (ou null) em vez de um array
if (error) {
console.error('[SERVICE_ERROR] Erro ao buscar instância no Supabase:', error);
throw new Error(error.message);
}
console.log('[SERVICE] Dados retornados do DB:', data);
return data;
};
// Re-export das outras funções para manter compatibilidade
export const updateUserWhatsAppInstance = async (userEmail: string, instanceData: any) => {
const { error } = await supabase
.from('usuarios')
.update({
instancia_zap: instanceData.instanceName,
status_instancia: instanceData.status
})
.eq('email', userEmail);
if (error) {
console.error('[SERVICE_ERROR] Erro ao atualizar instância:', error);
throw error;
}
};
export const removeUserWhatsAppInstance = async (userEmail: string) => {
const { error } = await supabase
.from('usuarios')
.update({
instancia_zap: null,
status_instancia: 'desconectado'
})
.eq('email', userEmail);
if (error) {
console.error('[SERVICE_ERROR] Erro ao remover instância:', error);
throw error;
}
};
export const getUserDebugInfo = async (userEmail: string) => {
return await getUserWhatsAppInstance(userEmail);
};
export const activateUserWorkflow = async (userEmail: string) => {
console.log('[SERVICE] Ativando workflow para:', userEmail);
// Implementação do workflow se necessário
};
export const checkUserHasInstance = async (userEmail: string) => {
const data = await getUserWhatsAppInstance(userEmail);
return !!(data && data.instancia_zap && data.status_instancia === 'conectado');
};