budget-view-finance/src/hooks/whatsappGroups/useGroupCreation.ts
gpt-engineer-app[bot] 3800e5818b Fix: Ensure webhooks are sent
The webhooks for workflow activation and general configuration are not being sent. This commit addresses the issue.
2025-07-02 01:14:09 +00:00

153 lines
4.7 KiB
TypeScript

import { useState } from 'react';
import { useToast } from '@/hooks/use-toast';
export const useGroupCreation = (userEmail: string, onSuccess: () => void) => {
const { toast } = useToast();
const [cadastrando, setCadastrando] = useState<boolean>(false);
const handleCadastrarGrupo = async (nomeGrupo: string, userInstance: any) => {
if (!userEmail) {
toast({
title: 'Erro',
description: 'Você precisa estar logado para cadastrar um grupo',
variant: 'destructive',
});
return;
}
if (!nomeGrupo.trim()) {
toast({
title: 'Atenção',
description: 'Digite um nome para o grupo',
variant: 'destructive',
});
return;
}
setCadastrando(true);
try {
// 1. Webhook para criar grupo via N8N
console.log("🔔 [GRUPO] Enviando webhook para criar grupo via N8N");
const webhookCriarGrupo = 'https://webhookn8n.innova1001.com.br/webhook/criargrupofinance';
const webhookData = {
email: userEmail,
whatsapp: userInstance?.whatsapp || '',
nomeGrupo: nomeGrupo.trim(),
instancia: userInstance?.instancia_zap || '',
timestamp: new Date().toISOString()
};
console.log('🔔 Enviando dados para webhook criar grupo:', webhookData);
const responseCriar = await fetch(webhookCriarGrupo, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(webhookData)
});
if (!responseCriar.ok) {
const errorText = await responseCriar.text();
console.error(`❌ Erro ao enviar webhook criar grupo: ${responseCriar.status} - ${errorText}`);
throw new Error(`Erro ao criar grupo via N8N: ${responseCriar.status}`);
}
console.log('✅ [GRUPO] Webhook criar grupo enviado com sucesso');
// 2. Webhook para ativar workflow
console.log("🔔 [GRUPO] Enviando webhook ativar workflow");
const webhookAtivarWorkflow = 'https://webhookn8n.innova1001.com.br/webhook/ativarworkflow';
const webhookAtivarData = {
email: userEmail,
timestamp: new Date().toISOString(),
action: 'activate_workflow'
};
console.log('🔔 Enviando dados para webhook ativar workflow:', webhookAtivarData);
try {
const responseAtivar = await fetch(webhookAtivarWorkflow, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(webhookAtivarData)
});
if (!responseAtivar.ok) {
const errorText = await responseAtivar.text();
console.error(`❌ Erro ao enviar webhook ativar workflow: ${responseAtivar.status} - ${errorText}`);
} else {
console.log('✅ [GRUPO] Webhook ativar workflow enviado com sucesso');
}
} catch (error) {
console.error('❌ Erro ao enviar webhook ativar workflow:', error);
}
// 3. Webhook para configurar hook da Evolution API
console.log("🔔 [GRUPO] Enviando webhook configurar hook");
const webhookHook = 'https://webhookn8n.innova1001.com.br/webhook/hook';
const webhookHookData = {
email: userEmail,
timestamp: new Date().toISOString()
};
console.log('🔔 Enviando dados para webhook hook:', webhookHookData);
try {
const responseHook = await fetch(webhookHook, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(webhookHookData)
});
if (!responseHook.ok) {
const errorText = await responseHook.text();
console.error(`❌ Erro ao enviar webhook hook: ${responseHook.status} - ${errorText}`);
} else {
console.log('✅ [GRUPO] Webhook hook enviado com sucesso');
}
} catch (error) {
console.error('❌ Erro ao enviar webhook hook:', error);
}
toast({
title: 'Sucesso!',
description: `Solicitação para criar grupo "${nomeGrupo}" enviada com sucesso!`,
variant: 'default',
});
// Atualizar a lista de grupos
onSuccess();
} catch (error) {
console.error('❌ Erro ao processar cadastro do grupo:', error);
let errorMsg = 'Erro desconhecido';
if (error instanceof Error) {
errorMsg = error.message;
}
toast({
title: 'Erro',
description: `Não foi possível solicitar criação do grupo: ${errorMsg}`,
variant: 'destructive',
});
} finally {
setCadastrando(false);
}
};
return {
cadastrando,
handleCadastrarGrupo
};
};