import { ErrorOverlay, FormTextAreaField, LoadingOverlay } from "@/components"; import { Alert, AlertDescription, AlertTitle, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Form, } from "@/ui"; import { t } from "i18next"; import { AlertCircleIcon } from "lucide-react"; import { useMemo, useState } from "react"; import { SubmitHandler, useForm } from "react-hook-form"; import { Trans } from "react-i18next"; import { useUnsavedChangesNotifier } from "@/lib/hooks"; import { cn } from "@/lib/utils"; import { IUpdateProfile_Request_DTO } from "@shared/contexts"; import { toast } from "react-toastify"; import { useSettings } from "./hooks"; type SettingsDataForm = IUpdateProfile_Request_DTO; export const SettingsEditor = () => { const [activeSection, setActiveSection] = useState("profile"); const { useOne, useUpdate } = useSettings(); const { data, status, error: queryError } = useOne(); const defaultValues = useMemo( () => ({ contact_information: "", default_payment_method: "", default_notes: "", default_legal_terms: "", default_quote_validity: "", }), [] ); const { mutate } = useUpdate(); const form = useForm({ mode: "onBlur", values: data?.dealer, defaultValues, //defaultValues: _defaultValues, /*resolver: joiResolver( Joi.object({ email: Joi.string() .email({ tlds: { allow: false } }) .required(), password: Joi.string().min(4).alphanum().required(), }), { messages: SpanishJoiMessages, } ),*/ }); const { formState, reset, getValues, handleSubmit } = form; const { isSubmitting, isDirty } = formState; useUnsavedChangesNotifier({ isDirty, }); const onSubmit: SubmitHandler = async (data) => { mutate(data, { onError: (error) => { console.debug(error); toast.error(error.message); //alert(error.message); }, //onSettled: () => {}, onSuccess: () => { reset(getValues()); toast("Ajustes guardados"); }, }); }; if (isSubmitting) { return ; } if (status === "error") { return ; } if (status !== "success") { return ; } return ( <>

); };