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); 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) {

View File

@ -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
}); });

View File

@ -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)}