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);
|
console.log('📋 Dados da instância encontrados:', existingInstance);
|
||||||
|
|
||||||
// Verificação rigorosa - deve ter instancia_zap válida
|
// Verificação correta: deve ter instancia_zap igual ao email E status_instancia = 'conectado'
|
||||||
const hasValidInstance = !!(
|
const hasValidConnectedInstance = !!(
|
||||||
existingInstance &&
|
existingInstance &&
|
||||||
existingInstance.instancia_zap &&
|
existingInstance.instancia_zap &&
|
||||||
existingInstance.instancia_zap.trim() !== '' &&
|
existingInstance.instancia_zap.trim() !== '' &&
|
||||||
existingInstance.instancia_zap !== 'null' &&
|
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,
|
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);
|
setExistingInstanceData(existingInstance);
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@ -29,19 +29,23 @@ export const useWhatsAppInstanceVerification = (userEmail: string) => {
|
|||||||
console.log('📋 Dados da instância encontrados:', instanceData);
|
console.log('📋 Dados da instância encontrados:', instanceData);
|
||||||
|
|
||||||
if (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 = !!(
|
const hasValidInstance = !!(
|
||||||
instanceData &&
|
instanceData &&
|
||||||
instanceData.instancia_zap &&
|
instanceData.instancia_zap &&
|
||||||
instanceData.instancia_zap.trim() !== '' &&
|
instanceData.instancia_zap.trim() !== '' &&
|
||||||
instanceData.instancia_zap !== 'null' &&
|
instanceData.instancia_zap !== 'null' &&
|
||||||
instanceData.instancia_zap !== null &&
|
instanceData.instancia_zap !== null &&
|
||||||
|
instanceData.instancia_zap.toLowerCase() === userEmail.toLowerCase() &&
|
||||||
instanceData.status_instancia === 'conectado'
|
instanceData.status_instancia === 'conectado'
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log('✅ Instância válida para criar grupos:', hasValidInstance, {
|
console.log('✅ Instância válida para criar grupos:', hasValidInstance, {
|
||||||
instancia_zap: instanceData.instancia_zap,
|
instancia_zap: instanceData.instancia_zap,
|
||||||
status_instancia: instanceData.status_instancia,
|
status_instancia: instanceData.status_instancia,
|
||||||
|
userEmail: userEmail,
|
||||||
|
instanceMatchesEmail: instanceData.instancia_zap?.toLowerCase() === userEmail.toLowerCase(),
|
||||||
|
isConnected: instanceData.status_instancia === 'conectado',
|
||||||
hasValidInstance
|
hasValidInstance
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -57,7 +57,7 @@ const WhatsApp = () => {
|
|||||||
|
|
||||||
const userEmail = localStorage.getItem('userEmail') || '';
|
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(() => {
|
useEffect(() => {
|
||||||
const checkUserInstanceFromDB = async () => {
|
const checkUserInstanceFromDB = async () => {
|
||||||
if (!userEmail) {
|
if (!userEmail) {
|
||||||
@ -70,20 +70,29 @@ const WhatsApp = () => {
|
|||||||
console.log('🔍 Verificando instância do usuário no banco:', userEmail);
|
console.log('🔍 Verificando instância do usuário no banco:', userEmail);
|
||||||
const instanceData = await getUserWhatsAppInstance(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 &&
|
||||||
instanceData.instancia_zap &&
|
instanceData.instancia_zap &&
|
||||||
instanceData.instancia_zap.trim() !== '' &&
|
instanceData.instancia_zap.trim() !== '' &&
|
||||||
instanceData.instancia_zap !== 'null' &&
|
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);
|
setHasValidInstance(hasConnectedInstance);
|
||||||
setShowCreateForm(!hasInstance);
|
setShowCreateForm(!hasConnectedInstance); // Mostra formulário apenas se NÃO tiver instância conectada
|
||||||
|
|
||||||
if (hasInstance) {
|
if (hasConnectedInstance) {
|
||||||
setInstanceFound(true);
|
setInstanceFound(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,7 +191,7 @@ const WhatsApp = () => {
|
|||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Show create form if user doesn't have a valid instance */}
|
{/* Show create form if user doesn't have a connected instance */}
|
||||||
{showCreateForm && (
|
{showCreateForm && (
|
||||||
<CreateInstanceForm
|
<CreateInstanceForm
|
||||||
onInstanceCreated={handleInstanceCreated}
|
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 && (
|
{!showCreateForm && hasValidInstance && (
|
||||||
<Button
|
<Button
|
||||||
onClick={() => setShowCreateForm(true)}
|
onClick={() => setShowCreateForm(true)}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user