.
This commit is contained in:
parent
74ec77e45c
commit
8545b430e3
@ -1,6 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
BackHistoryButton,
|
BackHistoryButton,
|
||||||
ErrorOverlay,
|
|
||||||
FormDatePickerField,
|
FormDatePickerField,
|
||||||
FormTextAreaField,
|
FormTextAreaField,
|
||||||
FormTextField,
|
FormTextField,
|
||||||
@ -11,7 +10,10 @@ import { t } from "i18next";
|
|||||||
import { SubmitButton } from "@/components";
|
import { SubmitButton } from "@/components";
|
||||||
import { useUnsavedChangesNotifier } from "@/lib/hooks";
|
import { useUnsavedChangesNotifier } from "@/lib/hooks";
|
||||||
import { Button, Form } from "@/ui";
|
import { Button, Form } from "@/ui";
|
||||||
|
import { joiResolver } from "@hookform/resolvers/joi";
|
||||||
import { ICreateQuote_Request_DTO } from "@shared/contexts";
|
import { ICreateQuote_Request_DTO } from "@shared/contexts";
|
||||||
|
import Joi from "joi";
|
||||||
|
import { useMemo } from "react";
|
||||||
import { SubmitHandler, useForm } from "react-hook-form";
|
import { SubmitHandler, useForm } from "react-hook-form";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
@ -22,14 +24,30 @@ interface QuoteDataForm extends ICreateQuote_Request_DTO {}
|
|||||||
export const QuoteCreate = () => {
|
export const QuoteCreate = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { useCreate } = useQuotes();
|
const { useCreate } = useQuotes();
|
||||||
const { mutate, error: mutateError, isError, isPending } = useCreate();
|
const { mutate, isPending } = useCreate();
|
||||||
|
|
||||||
const form = useForm<QuoteDataForm>({
|
const defaultValues = useMemo(
|
||||||
defaultValues: {
|
() => ({
|
||||||
date: new Date(Date.now()).toUTCString(),
|
date: new Date(Date.now()).toUTCString(),
|
||||||
customer_information: "",
|
customer_information: "",
|
||||||
reference: "",
|
reference: "",
|
||||||
},
|
}),
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
const form = useForm<QuoteDataForm>({
|
||||||
|
mode: "onBlur",
|
||||||
|
defaultValues,
|
||||||
|
resolver: joiResolver(
|
||||||
|
Joi.object({
|
||||||
|
reference: Joi.string().required(),
|
||||||
|
date: Joi.string().required(),
|
||||||
|
customer_information: Joi.string().required(),
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
//messages: SpanishJoiMessages,
|
||||||
|
}
|
||||||
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
const { formState, reset, getValues, handleSubmit } = form;
|
const { formState, reset, getValues, handleSubmit } = form;
|
||||||
@ -61,9 +79,9 @@ export const QuoteCreate = () => {
|
|||||||
return <LoadingOverlay title='Guardando ajustes' />;
|
return <LoadingOverlay title='Guardando ajustes' />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isError) {
|
/*if (isError) {
|
||||||
return <ErrorOverlay errorMessage={mutateError?.message} />;
|
return <ErrorOverlay errorMessage={mutateError?.message} />;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
if (isPending) {
|
if (isPending) {
|
||||||
return <LoadingOverlay />;
|
return <LoadingOverlay />;
|
||||||
|
|||||||
@ -43,23 +43,62 @@ const onResponse = (response: AxiosResponse): AxiosResponse => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onResponseError = (error: AxiosError): Promise<AxiosError> => {
|
const onResponseError = (error: AxiosError): Promise<AxiosError> => {
|
||||||
console.group("[response error]");
|
console.log("[response error]");
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
|
||||||
if (error.response) {
|
if (error.response) {
|
||||||
// La respuesta fue hecha y el servidor respondió con un código de estado
|
// La respuesta fue hecha y el servidor respondió con un código de estado
|
||||||
// que esta fuera del rango de 2xx
|
// que esta fuera del rango de 2xx
|
||||||
console.log("1 => El servidor respondió con un código de estado > 200");
|
console.log("1 => El servidor respondió con un código de estado > 200");
|
||||||
console.log(error.response.data);
|
|
||||||
console.log(error.response.status);
|
|
||||||
|
|
||||||
switch (error.response.status) {
|
const data = error.response.data;
|
||||||
|
const status = error.response.status;
|
||||||
|
|
||||||
|
console.log(data);
|
||||||
|
console.log(status);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
{
|
||||||
|
detail: "Quote data not valid",
|
||||||
|
instance: "/api/v1/quotes",
|
||||||
|
status: 422,
|
||||||
|
title: "Unprocessable Entity",
|
||||||
|
type: "about:blank",
|
||||||
|
context: {
|
||||||
|
params: {
|
||||||
|
},
|
||||||
|
query: {
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
date: "2024-08-13",
|
||||||
|
customer_information: "",
|
||||||
|
reference: "",
|
||||||
|
status: "draft",
|
||||||
|
id: "9c1c6073-127a-4bde-a73c-6229efb51ad0",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
extra: {
|
||||||
|
errors: [
|
||||||
|
{
|
||||||
|
reference: "{reference} is not allowed to be empty",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
customer_information: "{customer_information} is not allowed to be empty",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
switch (status) {
|
||||||
case 400:
|
case 400:
|
||||||
console.error("Bad Request");
|
console.error("Bad Request");
|
||||||
break;
|
break;
|
||||||
case 401:
|
case 401:
|
||||||
console.error("UnAuthorized");
|
console.error("UnAuthorized");
|
||||||
return (window.location.href = "/logout");
|
window.location.href = "/logout";
|
||||||
break;
|
break;
|
||||||
case 403:
|
case 403:
|
||||||
console.error("Forbidden");
|
console.error("Forbidden");
|
||||||
@ -74,9 +113,9 @@ const onResponseError = (error: AxiosError): Promise<AxiosError> => {
|
|||||||
|
|
||||||
case 422:
|
case 422:
|
||||||
console.error("Unprocessable Content");
|
console.error("Unprocessable Content");
|
||||||
throw error.response.data;
|
break;
|
||||||
}
|
}
|
||||||
console.error(error.response.status);
|
return Promise.reject(data);
|
||||||
} else if (error.request) {
|
} else if (error.request) {
|
||||||
// La petición fue hecha pero no se recibió respuesta
|
// La petición fue hecha pero no se recibió respuesta
|
||||||
console.log("2 => El servidor no respondió");
|
console.log("2 => El servidor no respondió");
|
||||||
@ -87,7 +126,7 @@ const onResponseError = (error: AxiosError): Promise<AxiosError> => {
|
|||||||
console.error(error);
|
console.error(error);
|
||||||
}
|
}
|
||||||
console.groupEnd();
|
console.groupEnd();
|
||||||
throw error;
|
return Promise.reject(error);
|
||||||
};
|
};
|
||||||
|
|
||||||
export function setupInterceptorsTo(axiosInstance: AxiosInstance): AxiosInstance {
|
export function setupInterceptorsTo(axiosInstance: AxiosInstance): AxiosInstance {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user