import ActionCheck from "@mui/icons-material/CheckCircle"; import ActionDelete from "@mui/icons-material/Delete"; import AlertError from "@mui/icons-material/ErrorOutline"; import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from "@mui/material"; import { Fragment, useState } from "react"; import { SimpleForm, BooleanInput, useTranslate, RaRecord, useNotify, useRedirect, useDelete, NotificationType, useDeleteMany, Identifier, useUnselectAll, } from "react-admin"; interface DeleteUserButtonProps { selectedIds: Identifier[]; confirmTitle: string; confirmContent: string; } const resourceName = "users"; const DeleteUserButton: React.FC = props => { const translate = useTranslate(); const [open, setOpen] = useState(false); const [deleteMedia, setDeleteMedia] = useState(false); const [redactEvents, setRedactEvents] = useState(false); const notify = useNotify(); const redirect = useRedirect(); const [deleteMany, { isLoading }] = useDeleteMany(); const unselectAll = useUnselectAll(resourceName); const recordIds = props.selectedIds; const handleDialogOpen = () => setOpen(true); const handleDialogClose = () => setOpen(false); const handleDelete = (values: { deleteMedia: boolean; redactEvents: boolean }) => { deleteMany( resourceName, { ids: recordIds, meta: values }, { onSuccess: () => { notify("ra.notification.deleted", { messageArgs: { smart_count: recordIds.length, }, type: "info" as NotificationType, }); handleDialogClose(); unselectAll(); redirect("/users"); }, onError: error => notify("ra.notification.data_provider_error", { type: "error" as NotificationType }), } ); }; const handleConfirm = () => { setOpen(false); handleDelete({ deleteMedia: deleteMedia, redactEvents: redactEvents }); }; return ( {translate(props.confirmTitle)} {translate(props.confirmContent)} ) => setDeleteMedia(event.target.checked)} label="resources.users.action.delete_media" defaultValue={false} /> ) => setRedactEvents(event.target.checked)} label="resources.users.action.redact_events" defaultValue={false} /> ); }; export default DeleteUserButton;