;
}) => {
const [update] = useUpdate();
const notify = useNotify();
const { identity } = useGetIdentity();
const { reset } = useFormContext();
const { refetch } = useListContext();
const translate = useTranslate();
if (!record || !identity) return null;
const resetValues: {
date: string;
text: null;
attachments: null;
status?: string;
} = {
date: getCurrentDate(),
text: null,
attachments: null,
};
if (reference === "contacts") {
resetValues.status = "warm";
}
const handleSuccess = (data: any) => {
reset(resetValues, { keepValues: false });
refetch();
// Only update last_seen for resources that have this column (contacts, companies)
const updateData: any = {};
if (reference === "contacts" || reference === "companies") {
updateData.last_seen = new Date().toISOString();
}
if (reference === "contacts") {
updateData.status = data.status;
}
// Only perform update if there's data to update
if (Object.keys(updateData).length > 0) {
update(reference, {
id: (record && record.id) as unknown as Identifier,
data: updateData,
previousData: record,
});
}
notify(translate("crm.note.added"));
};
return (
({
...data,
[foreignKeyMapping[reference]]: record.id,
sales_id: identity.id,
date: data.date || getCurrentDate(),
})}
mutationOptions={{
onSuccess: handleSuccess,
}}
>
{translate("crm.note.action.add")}
);
};