import { useMutation } from "@tanstack/react-query";
import {
useDataProvider,
useEditController,
useNotify,
useRecordContext,
useRedirect,
useTranslate,
} from "ra-core";
import { useEffect } from "react";
import type { SubmitHandler } from "react-hook-form";
import { SimpleForm } from "@/components/ds/admin/simple-form";
import { CancelButton } from "@/components/ds/admin/cancel-button";
import { SaveButton } from "@/components/ds/admin/form";
import { Card, CardContent } from "@/components/ds/ui/card";
import type { CrmDataProvider } from "../providers/types";
import type { Sale, SalesFormData } from "../types";
import { SalesInputs } from "./SalesInputs";
function EditToolbar() {
return (
);
}
export function SalesEdit() {
const { record, error } = useEditController();
const dataProvider = useDataProvider();
const notify = useNotify();
const redirect = useRedirect();
const translate = useTranslate();
// Handle error (user not found)
useEffect(() => {
if (error) {
notify("User not found or has been deleted", { type: "error" });
redirect("/sales");
}
}, [error, notify, redirect]);
const { mutate } = useMutation({
mutationKey: ["signup"],
mutationFn: async (data: SalesFormData) => {
if (!record) {
throw new Error("Record not found");
}
return dataProvider.salesUpdate(record.id, data);
},
onSuccess: () => {
redirect("/sales");
notify(translate("crm.user.notification.updated"));
},
onError: () => {
notify(translate("crm.user.notification.error"));
},
});
const onSubmit: SubmitHandler = async (data) => {
mutate(data);
};
return (
}
onSubmit={onSubmit as SubmitHandler}
record={record}
>
);
}
const SaleEditTitle = () => {
const record = useRecordContext();
const translate = useTranslate();
if (!record) return null;
const name =
record.first_name && record.last_name
? `${record.first_name} ${record.last_name}`
: record.email || "User";
return (
{translate("crm.user.action.edit", { name })}
);
};