This commit is contained in:
David Arranz 2024-09-09 18:48:50 +02:00
parent ad06b45f02
commit ddb94d7f13
3 changed files with 25 additions and 15 deletions

View File

@ -14,7 +14,7 @@
"dependencies": { "dependencies": {
"@dnd-kit/core": "^6.1.0", "@dnd-kit/core": "^6.1.0",
"@dnd-kit/sortable": "^8.0.0", "@dnd-kit/sortable": "^8.0.0",
"@hookform/resolvers": "^3.5.0", "@hookform/resolvers": "^3.9.0",
"@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-accordion": "^1.1.2",
"@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-alert-dialog": "^1.0.5",
"@radix-ui/react-aspect-ratio": "^1.0.3", "@radix-ui/react-aspect-ratio": "^1.0.3",

View File

@ -12,7 +12,6 @@ import {
CardTitle, CardTitle,
Form, Form,
} from "@/ui"; } from "@/ui";
import { joiResolver } from "@hookform/resolvers/joi";
import { t } from "i18next"; import { t } from "i18next";
import { AlertCircleIcon } from "lucide-react"; import { AlertCircleIcon } from "lucide-react";
@ -22,9 +21,8 @@ import { Trans } from "react-i18next";
import { useUnsavedChangesNotifier } from "@/lib/hooks"; import { useUnsavedChangesNotifier } from "@/lib/hooks";
import { cn } from "@/lib/utils"; import { cn } from "@/lib/utils";
import { useToast } from "@/ui/use-toast";
import { IUpdateProfile_Request_DTO } from "@shared/contexts"; import { IUpdateProfile_Request_DTO } from "@shared/contexts";
import Joi from "joi";
import { toast } from "react-toastify";
import { useSettings } from "./hooks"; import { useSettings } from "./hooks";
type SettingsDataForm = IUpdateProfile_Request_DTO; type SettingsDataForm = IUpdateProfile_Request_DTO;
@ -32,6 +30,7 @@ type SettingsDataForm = IUpdateProfile_Request_DTO;
export const SettingsEditor = () => { export const SettingsEditor = () => {
const [activeSection, setActiveSection] = useState("profile"); const [activeSection, setActiveSection] = useState("profile");
const { useOne, useUpdate } = useSettings(); const { useOne, useUpdate } = useSettings();
const { toast } = useToast();
const { data, status, error: queryError } = useOne(); const { data, status, error: queryError } = useOne();
@ -56,7 +55,7 @@ export const SettingsEditor = () => {
mode: "onBlur", mode: "onBlur",
values: data?.dealer, values: data?.dealer,
defaultValues, defaultValues,
resolver: joiResolver( /*resolver: joiResolver(
Joi.object({ Joi.object({
contact_information: Joi.string().optional().allow(null).allow("").default(""), contact_information: Joi.string().optional().allow(null).allow("").default(""),
default_payment_method: Joi.string().optional().allow(null).allow("").default(""), default_payment_method: Joi.string().optional().allow(null).allow("").default(""),
@ -68,7 +67,7 @@ export const SettingsEditor = () => {
scale: Joi.number(), scale: Joi.number(),
}).required(), }).required(),
}) })
), ),*/
}); });
const { formState, reset, getValues, handleSubmit } = form; const { formState, reset, getValues, handleSubmit } = form;
@ -79,16 +78,17 @@ export const SettingsEditor = () => {
}); });
const onSubmit: SubmitHandler<SettingsDataForm> = async (data) => { const onSubmit: SubmitHandler<SettingsDataForm> = async (data) => {
console.log("hola");
mutate(data, { mutate(data, {
onError: (error) => { onError: (error) => {
console.debug(error); console.debug(error);
toast.error(error.message); toast({ title: "Error", description: error.message });
//alert(error.message); //alert(error.message);
}, },
//onSettled: () => {}, //onSettled: () => {},
onSuccess: () => { onSuccess: () => {
reset(getValues()); reset(getValues());
toast.success("Ajustes guardados"); toast({ description: "Ajustes guardados" });
}, },
}); });
}; };

View File

@ -1,4 +1,4 @@
import { useOne, useSave } from "@/lib/hooks/useDataSource"; import { useOne } from "@/lib/hooks/useDataSource";
import { TDataSourceError } from "@/lib/hooks/useDataSource/types"; import { TDataSourceError } from "@/lib/hooks/useDataSource/types";
import { useDataSource } from "@/lib/hooks/useDataSource/useDataSource"; import { useDataSource } from "@/lib/hooks/useDataSource/useDataSource";
import { useQueryKey } from "@/lib/hooks/useQueryKey"; import { useQueryKey } from "@/lib/hooks/useQueryKey";
@ -7,6 +7,7 @@ import {
IUpdateProfile_Request_DTO, IUpdateProfile_Request_DTO,
IUpdateProfileResponse_DTO, IUpdateProfileResponse_DTO,
} from "@shared/contexts"; } from "@shared/contexts";
import { useMutation, useQueryClient } from "@tanstack/react-query";
export type UseSettingsGetParamsType = { export type UseSettingsGetParamsType = {
enabled?: boolean; enabled?: boolean;
@ -28,15 +29,24 @@ export const useSettings = (params?: UseSettingsGetParamsType) => {
}), }),
...params, ...params,
}), }),
useUpdate: () => useUpdate: () => {
useSave<IUpdateProfileResponse_DTO, TDataSourceError, IUpdateProfile_Request_DTO>({ const queryClient = useQueryClient();
return useMutation<IUpdateProfileResponse_DTO, TDataSourceError, IUpdateProfile_Request_DTO>({
mutationKey: keys().data().resource("settings").action("one").id("me").params().get(), mutationKey: keys().data().resource("settings").action("one").id("me").params().get(),
mutationFn: (data) => mutationFn: (data) => {
dataSource.updateOne({ return dataSource.updateOne({
resource: "profile", resource: "profile",
data, data,
id: "", id: "",
}), });
}), },
onSuccess: () => {
queryClient.invalidateQueries({
queryKey: ["data", "default", "settings"],
});
},
});
},
}; };
}; };