From fefe94f7b1e959d7c9d0ebc044c512203a96b0a3 Mon Sep 17 00:00:00 2001 From: = <=> Date: Tue, 23 Sep 2025 15:56:44 -0300 Subject: [PATCH] [MVPTN-9] refactor(geral): implementando gerenciador de erro, removendo mock de dados e usando o botao de loading --- .../tipo-logradouro/page.tsx | 26 ++++- .../GTBTipoLogradouroForm.tsx | 10 +- .../GTBTipoLogradouroIndexData.ts | 7 -- .../GTBTipoLogradouro/mockTipoLogradouro.ts | 98 ------------------- .../GTBTipoLogradouroIndexService.ts | 7 +- .../GTBTipoLogradouroRemoveService.ts | 7 +- .../GTBTipoLogradouroSaveService.ts | 9 +- 7 files changed, 45 insertions(+), 119 deletions(-) delete mode 100644 src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/mockTipoLogradouro.ts diff --git a/src/app/(protected)/(cadastros)/cadastros/(g_tb_tipologradouro)/tipo-logradouro/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(g_tb_tipologradouro)/tipo-logradouro/page.tsx index aced899..f7d42ce 100644 --- a/src/app/(protected)/(cadastros)/cadastros/(g_tb_tipologradouro)/tipo-logradouro/page.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/(g_tb_tipologradouro)/tipo-logradouro/page.tsx @@ -16,8 +16,16 @@ import { useGTBTipoLogradouroRemoveHook } from "../../_hooks/g_tb_tipologradouro import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; +import { useResponse } from "@/app/_response/ResponseContext"; + export default function TTBAndamentoServico() { + // Controle de exibição de respostas + const { setResponse } = useResponse(); + + // Controle de estado do botão + const [buttonIsLoading, setButtonIsLoading] = useState(false); + // Hooks para leitura e salvamento const { gTBTipoLogradouro, fetchGTBTipoLogradouro } = useGTBTipoLogradouroReadHook(); const { saveGTBTipoLogradouro } = useGTBTipoLogradouroSaveHook(); @@ -36,7 +44,6 @@ export default function TTBAndamentoServico() { const { isOpen: isConfirmOpen, openDialog: openConfirmDialog, - handleConfirm, handleCancel, } = useConfirmDialog(); @@ -61,9 +68,15 @@ export default function TTBAndamentoServico() { */ const handleSave = useCallback(async (formData: GTBTipoLogradouroInterface) => { + // Coloca o botão em estado de loading + setButtonIsLoading(true); + // Aguarda salvar o registro await saveGTBTipoLogradouro(formData); + // Remove o botão do estado de loading + setButtonIsLoading(false); + // Atualiza a lista de dados fetchGTBTipoLogradouro(); @@ -88,7 +101,15 @@ export default function TTBAndamentoServico() { const handleDelete = useCallback(async () => { // Protege contra null - if (!itemToDelete) return; + if (!itemToDelete) { + + // Define os dados da resposta visual + setResponse({ + status: 400, + message: 'Não foi informado um registro para exclusão' + }); + return; + }; // Executa o Hook de remoção await removeGTBTipoLogradouro(itemToDelete); @@ -157,6 +178,7 @@ export default function TTBAndamentoServico() { data={selectedTipoLogradouro} onClose={handleCloseForm} onSave={handleSave} + buttonIsLoading={buttonIsLoading} /> ); diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroForm.tsx index 30e26af..6dd7432 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroForm.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroForm.tsx @@ -27,6 +27,8 @@ import { import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; +import LoadingButton from "@/app/_components/loadingButton/LoadingButton"; + import { GTBTipoLogradouroSchema } from "../../_schemas/GTBTipoLogradouroSchema"; import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; @@ -37,9 +39,10 @@ interface GTBTipoLogradouroFormProps { data: FormValues | null; onClose: (item: null, isFormStatus: boolean) => void; onSave: (data: FormValues) => void; + buttonIsLoading: boolean; } -export default function GTBTipoLogradouroForm({ isOpen, data, onClose, onSave }: GTBTipoLogradouroFormProps) { +export default function GTBTipoLogradouroForm({ isOpen, data, onClose, onSave,buttonIsLoading }: GTBTipoLogradouroFormProps) { // Inicializa o react-hook-form com schema zod const form = useForm({ resolver: zodResolver(GTBTipoLogradouroSchema), @@ -130,9 +133,8 @@ export default function GTBTipoLogradouroForm({ isOpen, data, onClose, onSave }: Cancelar - + {/* Botão de loading */} + {/* Campos ocultos */} diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts index a9fa5ae..a098719 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts @@ -1,14 +1,7 @@ import API from "@/services/api/Api"; import { Methods } from "@/services/api/enums/ApiMethodEnum"; -import TipoLogradouroMockDeDados from "./mockTipoLogradouro"; - -const useMock = false export default async function GTBTipoLogradouroIndexData() { - if (useMock) { - console.log(TipoLogradouroMockDeDados()) - return await TipoLogradouroMockDeDados(); - } const api = new API(); try { diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/mockTipoLogradouro.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/mockTipoLogradouro.ts deleted file mode 100644 index d0ea84a..0000000 --- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/mockTipoLogradouro.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; - -export default async function TipoLogradouroMockDeDados(){ - return Promise.resolve({ - status: 200, - message: 'Dados localizados', - data: [ - { - sistema_id: null, - tb_tipologradouro_id: 1, - situacao_id: null, - descricao: "Rua", - situacao: "A", - onr_tipo_logradouro_id: 250 - }, - { - sistema_id: null, - tb_tipologradouro_id: 2, - situacao_id: null, - descricao: "Avenida", - situacao: "A", - onr_tipo_logradouro_id: 26 - }, - { - sistema_id: null, - tb_tipologradouro_id: 3, - situacao_id: null, - descricao: "Alameda", - situacao: "A", - onr_tipo_logradouro_id: 10 - }, - { - sistema_id: null, - tb_tipologradouro_id: 4, - situacao_id: null, - descricao: "Praça", - situacao: "A", - onr_tipo_logradouro_id: 215 - }, - { - sistema_id: null, - tb_tipologradouro_id: 5, - situacao_id: null, - descricao: "Via", - situacao: "A", - onr_tipo_logradouro_id: 294 - }, - { - sistema_id: null, - tb_tipologradouro_id: 6, - situacao_id: null, - descricao: "Viela", - situacao: "A", - onr_tipo_logradouro_id: 297 - }, - { - sistema_id: null, - tb_tipologradouro_id: 7, - situacao_id: null, - descricao: "Travessa", - situacao: "A", - onr_tipo_logradouro_id: 273 - }, - { - sistema_id: null, - tb_tipologradouro_id: 8, - situacao_id: null, - descricao: "Rodovia", - situacao: "A", - onr_tipo_logradouro_id: 247 - }, - { - sistema_id: null, - tb_tipologradouro_id: 9, - situacao_id: null, - descricao: "Sítios", - situacao: "A", - onr_tipo_logradouro_id: 263 - }, - { - sistema_id: null, - tb_tipologradouro_id: 10, - situacao_id: null, - descricao: "Córrego", - situacao: "A", - onr_tipo_logradouro_id: 86 - }, - { - sistema_id: null, - tb_tipologradouro_id: 11, - situacao_id: null, - descricao: "Estrada", - situacao: "A", - onr_tipo_logradouro_id: 117 - } - ] - }); -} diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroIndexService.ts index 1eb7666..b08ea02 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroIndexService.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroIndexService.ts @@ -1,6 +1,7 @@ +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; import GTBTipoLogradouroIndexData from "../../_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData"; -export default async function GTBTipoLogradouroIndexService() { +async function executeGTBTipoLogradouroIndexService() { try { const response = await GTBTipoLogradouroIndexData(); @@ -9,4 +10,6 @@ export default async function GTBTipoLogradouroIndexService() { console.log(error) return error } -} \ No newline at end of file +} + +export const GTBTipoLogradouroIndexService = withClientErrorHandler(executeGTBTipoLogradouroIndexService) \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroRemoveService.ts index 2fca163..c82594d 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroRemoveService.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroRemoveService.ts @@ -1,10 +1,13 @@ +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; import GTBTipoLogradouroRemoveData from "../../_data/GTBTipoLogradouro/GTBTipoLogradouroRemoveData"; import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; -export default async function GTBTipoLogradouroRemoveService(data: GTBTipoLogradouroInterface) { +async function executeGTBTipoLogradouroRemoveService(data: GTBTipoLogradouroInterface) { const response = await GTBTipoLogradouroRemoveData(data); return response; -} \ No newline at end of file +} + +export const GTBTipoLogradouroRemoveService = withClientErrorHandler(executeGTBTipoLogradouroRemoveService) \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroSaveService.ts index ce514bc..494bad6 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroSaveService.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroSaveService.ts @@ -1,12 +1,13 @@ +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; import GTBTipoLogradouroSaveData from "../../_data/GTBTipoLogradouro/GTBTipoLogradouroSaveData"; import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; -export default async function GTBTipoLogradouroSaveService(data: GTBTipoLogradouroInterface) { +async function executeGTBTipoLogradouroSaveService(data: GTBTipoLogradouroInterface) { const response = await GTBTipoLogradouroSaveData(data); - console.log('GTBTipoLogradouroSaveData', response) - return response; -} \ No newline at end of file +} + +export const GTBTipoLogradouroSaveService = withClientErrorHandler(executeGTBTipoLogradouroSaveService) \ No newline at end of file