fix(Response): Ajuste do controle de resposta inesperadas vindas do servidor

This commit is contained in:
Keven Willian Pereira de Souza 2025-09-16 11:19:36 -03:00
parent 87f4a40d9f
commit debe30dc71
14 changed files with 69 additions and 27 deletions

2
.gitignore vendored
View file

@ -40,4 +40,4 @@ yarn-error.log*
*.tsbuildinfo
next-env.d.ts
src/config/app.json
/src/config/app.json

View file

@ -64,9 +64,6 @@ export default function TTBAndamentoServico() {
// Aguarda salvar o registro
await saveGTBProfissao(formData);
// Encerra o fomulário
handleCloseForm();
// Atualiza a lista de dados
fetchGTBProfissao();

View file

@ -64,13 +64,10 @@ export default function TTBAndamentoServico() {
// Aguarda salvar o registro
await saveGTBRegimeComunhao(formData);
// Encerra o fomulário
handleCloseForm();
// Atualiza a lista de dados
fetchGTBRegimeComunhao();
}, [saveGTBRegimeComunhao, fetchGTBRegimeComunhao, handleCloseForm]);
}, [saveGTBRegimeComunhao, fetchGTBRegimeComunhao]);
/**
* Quando o usuário clica em "remover" na tabela

View file

@ -64,13 +64,10 @@ export default function TTBAndamentoServico() {
// Aguarda salvar o registro
await saveTTBAndamentoServico(formData);
// Encerra o fomulário
handleCloseForm();
// Atualiza a lista de dados
fetchTTBAndamentoServico();
}, [saveTTBAndamentoServico, fetchTTBAndamentoServico, handleCloseForm]);
}, [saveTTBAndamentoServico, fetchTTBAndamentoServico]);
/**
* Quando o usuário clica em "remover" na tabela

View file

@ -65,13 +65,10 @@ export default function TTBAndamentoServico() {
// Aguarda salvar o registro
await saveTTBReconhecimentoTipo(formData);
// Encerra o fomulário
handleCloseForm();
// Atualiza a lista de dados
fetchTTBReconhecimentosTipos();
}, [saveTTBReconhecimentoTipo, fetchTTBReconhecimentosTipos, handleCloseForm]);
}, [saveTTBReconhecimentoTipo, fetchTTBReconhecimentosTipos]);
/**
* Quando o usuário clica em "remover" na tabela

View file

@ -63,6 +63,7 @@ export default function GTBProfissaoForm({ isOpen, data, onClose, onSave }: Prop
}}
>
<DialogContent className="sm:max-w-[425px]">
<DialogHeader>
<DialogTitle>
Profissões

View file

@ -7,6 +7,8 @@ export const useGTBProfissaoSaveHook = () => {
const { setResponse } = useResponse();
const [gTBProfissao, setGTBProfissao] = useState<GTBProfissaoInterface | null>(null);
// controla se o formulário está aberto ou fechado
const [isOpen, setIsOpen] = useState(false);
const saveGTBProfissao = async (data: GTBProfissaoInterface) => {
@ -16,6 +18,12 @@ export const useGTBProfissaoSaveHook = () => {
setResponse(response);
// Fecha o formulário automaticamente após salvar
setIsOpen(false);
// Retorna os dados imediatamente
return response;
}
return { gTBProfissao, saveGTBProfissao }

View file

@ -7,15 +7,25 @@ export const useGTBRegimeComunhaoSaveHook = () => {
const { setResponse } = useResponse();
const [gTBRegimeComunhao, setGTBRegimeComunhao] = useState<GTBRegimeComunhaoInterface | null>(null);
// controla se o formulário está aberto ou fechado
const [isOpen, setIsOpen] = useState(false);
const saveGTBRegimeComunhao = async (data: GTBRegimeComunhaoInterface) => {
const response = await GTBRegimeComunhaoSaveService(data);
// Guardar os dados localizados
setGTBRegimeComunhao(response.data);
// Manda a resposta para o verificador de resposta
setResponse(response);
// Fecha o formulário automaticamente após salvar
setIsOpen(false);
// Retorna os dados imediatamente
return response;
}
return { gTBRegimeComunhao, saveGTBRegimeComunhao }

View file

@ -11,6 +11,9 @@ export const useTTBAndamentoServicoSaveHook = () => {
const [tTBAndamentoServico, setTTBAndamentoServico] = useState<TTBAndamentoServicoInteface>();
// controla se o formulário está aberto ou fechado
const [isOpen, setIsOpen] = useState(false);
const saveTTBAndamentoServico = async (data: TTBAndamentoServicoInteface) => {
const response = await TTBAndamentoServicoSaveData(data);
@ -21,6 +24,9 @@ export const useTTBAndamentoServicoSaveHook = () => {
// Define os dados da respota(toast, modal, etc)
setResponse(response);
// Fecha o formulário automaticamente após salvar
setIsOpen(false);
// Retorna os valores de forma imediata
return response.data;

View file

@ -11,6 +11,9 @@ export const useTTBReconhecimentoTipoSaveHook = () => {
const [tTBReconhecimentoTipo, setTTBReconhcimentoTipo] = useState<ITTTBReconhecimentoTipo>();
// controla se o formulário está aberto ou fechado
const [isOpen, setIsOpen] = useState(false);
const saveTTBReconhecimentoTipo = async (reconhecimentoTipo: ITTTBReconhecimentoTipo) => {
const response = await TTBReconhecimentoTipoSaveData(reconhecimentoTipo);
@ -19,6 +22,9 @@ export const useTTBReconhecimentoTipoSaveHook = () => {
setResponse(response);
// Fecha o formulário automaticamente após salvar
setIsOpen(false);
// Retorna os valores de forma imediata
return response.data;

View file

@ -5,6 +5,8 @@ export default async function GTProfissaoSaveService(data: GTBProfissaoInterface
const response = await GTBProfissaoSaveData(data);
console.log('GTBRegimeComunhaoSaveData', response)
return response;
}

View file

@ -74,7 +74,7 @@ export default function RootLayout({
<ResponseProvider>
<div className="flex flex-1 flex-col gap-4 p-4 pt-0">
{children}
<Toaster position="top-center" />
<Toaster richColors position="top-center" />
<Response />
</div>
</ResponseProvider>

View file

@ -17,10 +17,10 @@ interface ResponseContextProps {
const ResponseContext = createContext<ResponseContextProps | undefined>(undefined);
export const ResponseProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
const [response, setResponseState] = useState<ResponseState>({ message: '', type: null, status : 0});
const [response, setResponseState] = useState<ResponseState>({ message: '', type: null, status: 0 });
const setResponse = (value: ResponseState) => setResponseState(value);
const clearResponse = () => setResponseState({ message: '', type: null, status : 0});
const clearResponse = () => setResponseState({ message: '', type: null, status: 0 });
return (
<ResponseContext.Provider value={{ response, setResponse, clearResponse }}>

View file

@ -1,17 +1,38 @@
// app/src/app/_response/response.tsx
"use client";
import { useResponse } from "./ResponseContext";
import { useEffect } from "react";
import { toast } from "sonner";
import {
useResponse
} from "./ResponseContext";
import {
useEffect
} from "react";
import {
toast
} from "sonner";
export default function Response() {
const { response, clearResponse } = useResponse();
const {
response,
clearResponse
} = useResponse();
useEffect(() => {
switch (Number(response?.status)) {
case 200:
toast(response.message);
case 201:
toast.success(response.message);
break;
case 422:
toast.danger(response.error, {
description: response.detail
});
break;
default:
if (response.status !== 0 && response.status !== 200 && response.status !== 201) {
toast.warning(JSON.stringify(response));
}
break;
}
}, [response, clearResponse]);