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"; import ActionDelete from "@mui/icons-material/Delete"; import ActionCheck from "@mui/icons-material/CheckCircle"; import AlertError from "@mui/icons-material/ErrorOutline"; 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;