[MVPTN-9] refactor(geral): implementando gerenciador de erro, removendo mock de dados e usando o botao de loading
This commit is contained in:
parent
c7f86522fb
commit
fefe94f7b1
7 changed files with 45 additions and 119 deletions
|
|
@ -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}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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<FormValues>({
|
||||
resolver: zodResolver(GTBTipoLogradouroSchema),
|
||||
|
|
@ -130,9 +133,8 @@ export default function GTBTipoLogradouroForm({ isOpen, data, onClose, onSave }:
|
|||
Cancelar
|
||||
</Button>
|
||||
</DialogClose>
|
||||
<Button type="submit" className="cursor-pointer">
|
||||
Salvar
|
||||
</Button>
|
||||
{/* Botão de loading */}
|
||||
<LoadingButton text="Salvar" textLoading="Aguarde..." type="submit" loading={buttonIsLoading} />
|
||||
</DialogFooter>
|
||||
|
||||
{/* Campos ocultos */}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const GTBTipoLogradouroIndexService = withClientErrorHandler(executeGTBTipoLogradouroIndexService)
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export const GTBTipoLogradouroRemoveService = withClientErrorHandler(executeGTBTipoLogradouroRemoveService)
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export const GTBTipoLogradouroSaveService = withClientErrorHandler(executeGTBTipoLogradouroSaveService)
|
||||
Loading…
Add table
Reference in a new issue