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:
parent
c06f108d6e
commit
11768cba9f
@ -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) {
|
||||
|
||||
@ -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
|
||||
});
|
||||
|
||||
|
||||
@ -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)}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user