import React, { useState } from "react";
import {
BooleanInput,
Button,
DateTimeInput,
NumberInput,
SaveButton,
SimpleForm,
Toolbar,
useCreate,
useDelete,
useNotify,
useRecordContext,
useRefresh,
useTranslate,
} from "react-admin";
import BlockIcon from "@mui/icons-material/Block";
import ClearIcon from "@mui/icons-material/Clear";
import DeleteSweepIcon from "@mui/icons-material/DeleteSweep";
import {
Dialog,
DialogContent,
DialogContentText,
DialogTitle,
Tooltip,
} from "@mui/material";
import IconCancel from "@mui/icons-material/Cancel";
import LockIcon from "@mui/icons-material/Lock";
import LockOpenIcon from "@mui/icons-material/LockOpen";
import { alpha, useTheme } from "@mui/material/styles";
const DeleteMediaDialog = ({ open, loading, onClose, onSubmit }) => {
const translate = useTranslate();
const dateParser = v => {
const d = new Date(v);
if (isNaN(d)) return 0;
return d.getTime();
};
const DeleteMediaToolbar = props => {
return (
}
/>
);
};
return (
);
};
export const DeleteMediaButton = props => {
const theme = useTheme();
const [open, setOpen] = useState(false);
const notify = useNotify();
const [deleteOne, { isLoading }] = useDelete();
const handleDialogOpen = () => setOpen(true);
const handleDialogClose = () => setOpen(false);
const handleSend = values => {
deleteOne(
"delete_media",
{ id: values.id },
{
onSuccess: () => {
notify("resources.delete_media.action.send_success");
handleDialogClose();
},
onError: () =>
notify("resources.delete_media.action.send_failure", {
type: "error",
}),
}
);
};
return (
<>
>
);
};
export const ProtectMediaButton = props => {
const record = useRecordContext();
const translate = useTranslate();
const refresh = useRefresh();
const notify = useNotify();
const [create, { isLoading }] = useCreate();
const [deleteOne] = useDelete();
if (!record) return null;
const handleProtect = () => {
create(
"protect_media",
{ data: record },
{
onSuccess: () => {
notify("resources.protect_media.action.send_success");
refresh();
},
onError: () =>
notify("resources.protect_media.action.send_failure", {
type: "error",
}),
}
);
};
const handleUnprotect = () => {
deleteOne(
"protect_media",
{ id: record.id },
{
onSuccess: () => {
notify("resources.protect_media.action.send_success");
refresh();
},
onError: () =>
notify("resources.protect_media.action.send_failure", {
type: "error",
}),
}
);
};
return (
/*
Wrapping Tooltip with
https://github.com/marmelab/react-admin/issues/4349#issuecomment-578594735
*/
<>
{record.quarantined_by && (
{/*
Button instead BooleanField for
consistent appearance and position in the column
*/}
)}
{record.safe_from_quarantine && (
)}
{!record.safe_from_quarantine && !record.quarantined_by && (
)}
>
);
};
export const QuarantineMediaButton = props => {
const record = useRecordContext();
const translate = useTranslate();
const refresh = useRefresh();
const notify = useNotify();
const [create, { isLoading }] = useCreate();
const [deleteOne] = useDelete();
if (!record) return null;
const handleQuarantaine = () => {
create(
"quarantine_media",
{ data: record },
{
onSuccess: () => {
notify("resources.quarantine_media.action.send_success");
refresh();
},
onError: () =>
notify("resources.quarantine_media.action.send_failure", {
type: "error",
}),
}
);
};
const handleRemoveQuarantaine = () => {
deleteOne(
"quarantine_media",
{ id: record.id },
{
onSuccess: () => {
notify("resources.quarantine_media.action.send_success");
refresh();
},
onError: () =>
notify("resources.quarantine_media.action.send_failure", {
type: "error",
}),
}
);
};
return (
<>
{record.safe_from_quarantine && (
)}
{record.quarantined_by && (
)}
{!record.safe_from_quarantine && !record.quarantined_by && (
)}
>
);
};