Refactor ServerNotices

https://marmelab.com/react-admin/Upgrade.html#usequery-usemutation-and-usequerywithstore-have-been-removed

Change-Id: Id12f727d8813f78c3ae300035aeb1333a1272e02
This commit is contained in:
Manuel Stahl 2024-02-06 14:17:00 +01:00
parent 6430aca02b
commit 4204eb902f

View File

@ -7,6 +7,7 @@ import {
Toolbar, Toolbar,
required, required,
useCreate, useCreate,
useDataProvider,
useListContext, useListContext,
useNotify, useNotify,
useRecordContext, useRecordContext,
@ -47,11 +48,7 @@ const ServerNoticeDialog = ({ open, loading, onClose, onSubmit }) => {
<DialogContentText> <DialogContentText>
{translate("resources.servernotices.helper.send")} {translate("resources.servernotices.helper.send")}
</DialogContentText> </DialogContentText>
<SimpleForm <SimpleForm toolbar={<ServerNoticeToolbar />} onSubmit={onSubmit}>
toolbar={<ServerNoticeToolbar />}
redirect={false}
onSubmit={onSubmit}
>
<TextInput <TextInput
source="body" source="body"
label="resources.servernotices.fields.body" label="resources.servernotices.fields.body"
@ -114,43 +111,44 @@ export const ServerNoticeButton = () => {
export const ServerNoticeBulkButton = () => { export const ServerNoticeBulkButton = () => {
const { selectedIds } = useListContext(); const { selectedIds } = useListContext();
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const openDialog = () => setOpen(true);
const closeDialog = () => setOpen(false);
const notify = useNotify(); const notify = useNotify();
const unselectAllUsers = useUnselectAll("users"); const unselectAllUsers = useUnselectAll("users");
const { createMany, isloading } = useMutation(); const dataProvider = useDataProvider();
const handleDialogOpen = () => setOpen(true); const { mutate: sendNotices, isLoading } = useMutation(
const handleDialogClose = () => setOpen(false); data =>
dataProvider.createMany("servernotices", {
const handleSend = values => { ids: selectedIds,
createMany( data: data,
["servernotices", "createMany", { ids: selectedIds, data: values }], }),
{ {
onSuccess: data => { onSuccess: () => {
notify("resources.servernotices.action.send_success"); notify("resources.servernotices.action.send_success");
unselectAllUsers(); unselectAllUsers();
handleDialogClose(); closeDialog();
}, },
onError: error => onError: () =>
notify("resources.servernotices.action.send_failure", { notify("resources.servernotices.action.send_failure", {
type: "error", type: "error",
}), }),
} }
); );
};
return ( return (
<> <>
<Button <Button
label="resources.servernotices.send" label="resources.servernotices.send"
onClick={handleDialogOpen} onClick={openDialog}
disabled={isloading} disabled={isLoading}
> >
<MessageIcon /> <MessageIcon />
</Button> </Button>
<ServerNoticeDialog <ServerNoticeDialog
open={open} open={open}
onClose={handleDialogClose} onClose={closeDialog}
onSubmit={handleSend} onSubmit={sendNotices}
/> />
</> </>
); );