import { AppBreadcrumb, AppContent, BackHistoryButton, ButtonGroup } from "@repo/rdx-ui/components"; import { Button } from "@repo/shadcn-ui/components"; import { useNavigate } from "react-router-dom"; import { useUrlParamId } from "@erp/core/hooks"; import { showErrorToast, showSuccessToast } from "@repo/shadcn-ui/lib/utils"; import { CustomerEditorSkeleton, ErrorAlert, NotFoundCard } from "../../components"; import { useCustomerQuery, useUpdateCustomerMutation } from "../../hooks"; import { useTranslation } from "../../i18n"; import { CustomerUpdateData } from "../../schemas"; import { CustomerEditForm } from "./customer-edit-form"; export const CustomerUpdate = () => { const { t } = useTranslation(); const customerId = useUrlParamId(); const navigate = useNavigate(); // 1) Estado de carga del cliente (query) const { data: customerData, isLoading: isLoadingCustomer, isError: isLoadError, error: loadError, } = useCustomerQuery(customerId, { enabled: !!customerId }); // 2) Estado de actualización (mutación) const { mutateAsync, isPending: isUpdating, isError: isUpdateError, error: updateError, } = useUpdateCustomerMutation(); // 3) Submit con navegación condicionada por éxito const handleSubmit = async (formData: CustomerUpdateData) => { try { const result = await mutateAsync({ id: customerId!, data: formData }); if (result) { showSuccessToast(t("pages.update.successTitle"), t("pages.update.successMsg")); navigate("/customers/list"); } } catch (e) { showErrorToast(t("pages.update.errorTitle"), (e as Error).message); } finally { } }; if (isLoadingCustomer) { return ; } if (isLoadError) { return ( <> > ); } if (!customerData) return ( <> > ); return ( <> {t("pages.update.title")} {t("pages.update.description")} {t("pages.update.submit")} {/* Alerta de error de actualización (si ha fallado el último intento) */} {isUpdateError && ( )} {/* Importante: proveemos un formId para que el botón del header pueda hacer submit */} > ); };
{t("pages.update.description")}