Fix WhatsApp instance logic

Ensure instance creation logic checks 'instancia_zap' and 'status_instancia' in the 'usuarios' table. Allow group creation only when 'status_instancia' is 'conectado'.
This commit is contained in:
gpt-engineer-app[bot] 2025-06-21 15:07:13 +00:00
parent c06f108d6e
commit 11768cba9f
3 changed files with 34 additions and 16 deletions

View File

@ -21,21 +21,26 @@ export const useExistingInstanceCheck = (userEmail: string) => {
console.log('📋 Dados da instância encontrados:', existingInstance);
// Verificação rigorosa - deve ter instancia_zap válida
const hasValidInstance = !!(
// Verificação correta: deve ter instancia_zap igual ao email E status_instancia = 'conectado'
const hasValidConnectedInstance = !!(
existingInstance &&
existingInstance.instancia_zap &&
existingInstance.instancia_zap.trim() !== '' &&
existingInstance.instancia_zap !== 'null' &&
existingInstance.instancia_zap !== null
existingInstance.instancia_zap !== null &&
existingInstance.instancia_zap.toLowerCase() === userEmail.toLowerCase() &&
existingInstance.status_instancia === 'conectado'
);
console.log('✅ Usuário possui instância válida:', hasValidInstance, {
console.log('✅ Usuário possui instância conectada:', hasValidConnectedInstance, {
instancia_zap: existingInstance?.instancia_zap,
status_instancia: existingInstance?.status_instancia
status_instancia: existingInstance?.status_instancia,
userEmail: userEmail,
instanceMatchesEmail: existingInstance?.instancia_zap?.toLowerCase() === userEmail.toLowerCase(),
isConnected: existingInstance?.status_instancia === 'conectado'
});
setHasExistingInstance(hasValidInstance);
setHasExistingInstance(hasValidConnectedInstance);
setExistingInstanceData(existingInstance);
} catch (error) {

View File

@ -29,19 +29,23 @@ export const useWhatsAppInstanceVerification = (userEmail: string) => {
console.log('📋 Dados da instância encontrados:', instanceData);
if (instanceData) {
// Verificação rigorosa: deve ter instancia_zap válida E status conectado
// Verificação correta: deve ter instancia_zap igual ao email E status conectado
const hasValidInstance = !!(
instanceData &&
instanceData.instancia_zap &&
instanceData.instancia_zap.trim() !== '' &&
instanceData.instancia_zap !== 'null' &&
instanceData.instancia_zap !== null &&
instanceData.instancia_zap.toLowerCase() === userEmail.toLowerCase() &&
instanceData.status_instancia === 'conectado'
);
console.log('✅ Instância válida para criar grupos:', hasValidInstance, {
instancia_zap: instanceData.instancia_zap,
status_instancia: instanceData.status_instancia,
userEmail: userEmail,
instanceMatchesEmail: instanceData.instancia_zap?.toLowerCase() === userEmail.toLowerCase(),
isConnected: instanceData.status_instancia === 'conectado',
hasValidInstance
});

View File

@ -57,7 +57,7 @@ const WhatsApp = () => {
const userEmail = localStorage.getItem('userEmail') || '';
// Verificar se o usuário tem instância válida no banco de dados
// Verificar se o usuário tem instância válida conectada no banco de dados
useEffect(() => {
const checkUserInstanceFromDB = async () => {
if (!userEmail) {
@ -70,20 +70,29 @@ const WhatsApp = () => {
console.log('🔍 Verificando instância do usuário no banco:', userEmail);
const instanceData = await getUserWhatsAppInstance(userEmail);
const hasInstance = !!(
// Lógica corrigida: instancia_zap deve ser igual ao email E status deve ser 'conectado'
const hasConnectedInstance = !!(
instanceData &&
instanceData.instancia_zap &&
instanceData.instancia_zap.trim() !== '' &&
instanceData.instancia_zap !== 'null' &&
instanceData.instancia_zap !== null
instanceData.instancia_zap !== null &&
instanceData.instancia_zap.toLowerCase() === userEmail.toLowerCase() &&
instanceData.status_instancia === 'conectado'
);
console.log('📋 Usuário tem instância válida:', hasInstance, instanceData);
console.log('📋 Verificação da instância:', {
instanceData,
userEmail,
instanceMatchesEmail: instanceData?.instancia_zap?.toLowerCase() === userEmail.toLowerCase(),
isConnected: instanceData?.status_instancia === 'conectado',
hasConnectedInstance
});
setHasValidInstance(hasInstance);
setShowCreateForm(!hasInstance);
setHasValidInstance(hasConnectedInstance);
setShowCreateForm(!hasConnectedInstance); // Mostra formulário apenas se NÃO tiver instância conectada
if (hasInstance) {
if (hasConnectedInstance) {
setInstanceFound(true);
}
@ -182,7 +191,7 @@ const WhatsApp = () => {
</Button>
</div>
{/* Show create form if user doesn't have a valid instance */}
{/* Show create form if user doesn't have a connected instance */}
{showCreateForm && (
<CreateInstanceForm
onInstanceCreated={handleInstanceCreated}
@ -190,7 +199,7 @@ const WhatsApp = () => {
/>
)}
{/* Toggle Create Form Button - only show if form is hidden and user has instance */}
{/* Toggle Create Form Button - only show if form is hidden and user has connected instance */}
{!showCreateForm && hasValidInstance && (
<Button
onClick={() => setShowCreateForm(true)}