monitoring-app/src/packages/administrativo/hooks/Client/useClientDeleteHook.ts

37 lines
1.7 KiB
TypeScript

'use client';
// Define que este módulo será executado no lado do cliente (Client Component do Next.js)
import { useState } from 'react';
// Importa o hook `useState` do React (embora não esteja sendo usado aqui, pode ser útil em versões futuras)
import { useResponse } from '@/shared/components/response/ResponseContext';
// Importa o hook de contexto responsável por exibir feedbacks globais (como toasts, alerts ou modais)
import { ClientDeleteService } from '../../services/Client/ClientDeleteService';
// Importa o serviço responsável por realizar a exclusão do cliente via API
import { ClientInterface } from '../../interfaces/Client/ClientInterface';
// Importa a tipagem do objeto `ClientInterface` para garantir segurança de tipo e padronização dos dados
// Hook personalizado responsável por encapsular a lógica de exclusão de clientes
export const useClientDeleteHook = () => {
// Obtém a função `setResponse` do contexto global, usada para exibir feedbacks ao usuário
const { setResponse } = useResponse();
// Função assíncrona que executa a exclusão de um cliente específico
const removeClient = async (client: ClientInterface) => {
try {
// Chama o serviço de exclusão, enviando o ID do cliente como parâmetro
const response = await ClientDeleteService(client.client_id);
// Define a resposta no contexto global, permitindo exibir mensagem de sucesso/erro na interface
setResponse(response);
} catch (error) {
// Captura e exibe o erro no console (embora o handler global já trate exceções)
console.error('Erro ao remover usuário:', error);
}
};
// Retorna a função principal de exclusão, permitindo que o componente que usa este hook a invoque
return { removeClient };
};