import React, { useState } from "react"; import { Button, SaveButton, SimpleForm, TextInput, Toolbar, required, useCreate, useDataProvider, useListContext, useNotify, useRecordContext, useTranslate, useUnselectAll, } from "react-admin"; import { useMutation } from "react-query"; import MessageIcon from "@mui/icons-material/Message"; import IconCancel from "@mui/icons-material/Cancel"; import { Dialog, DialogContent, DialogContentText, DialogTitle, } from "@mui/material"; const ServerNoticeDialog = ({ open, loading, onClose, onSubmit }) => { const translate = useTranslate(); const ServerNoticeToolbar = props => ( ); return ( {translate("resources.servernotices.action.send")} {translate("resources.servernotices.helper.send")} } onSubmit={onSubmit}> ); }; export const ServerNoticeButton = () => { const record = useRecordContext(); const [open, setOpen] = useState(false); const notify = useNotify(); const [create, { isloading }] = useCreate(); const handleDialogOpen = () => setOpen(true); const handleDialogClose = () => setOpen(false); const handleSend = values => { create( "servernotices", { data: { id: record.id, ...values } }, { onSuccess: () => { notify("resources.servernotices.action.send_success"); handleDialogClose(); }, onError: () => notify("resources.servernotices.action.send_failure", { type: "error", }), } ); }; return ( <> ); }; export const ServerNoticeBulkButton = () => { const { selectedIds } = useListContext(); const [open, setOpen] = useState(false); const openDialog = () => setOpen(true); const closeDialog = () => setOpen(false); const notify = useNotify(); const unselectAllUsers = useUnselectAll("users"); const dataProvider = useDataProvider(); const { mutate: sendNotices, isLoading } = useMutation( data => dataProvider.createMany("servernotices", { ids: selectedIds, data: data, }), { onSuccess: () => { notify("resources.servernotices.action.send_success"); unselectAllUsers(); closeDialog(); }, onError: () => notify("resources.servernotices.action.send_failure", { type: "error", }), } ); return ( <> ); };