in frontend/src/components/deleteModal/index.js [13:89]
export function DeleteModal({ id, name, type, className }: Object) {
const navigate = useNavigate();
const token = useSelector((state) => state.auth.get('token'));
const [deleteStatus, setDeleteStatus] = useState(null);
const [error, setErrorMessage] = useState(null);
const deleteEntity = () => {
setDeleteStatus('started');
fetchLocalJSONAPI(`${type}/${id}/`, token, 'DELETE')
.then((success) => {
setDeleteStatus('success');
if (type === 'notifications') {
navigate(`/inbox`);
} else {
navigate(`/manage/${type}`);
}
})
.catch((e) => {
setDeleteStatus('failure');
setErrorMessage(e.message);
});
};
return (
<Popup
trigger={<DeleteButton className={`${className || ''} dib ml3`} />}
modal
closeOnDocumentClick
onClose={() => {
setDeleteStatus(null);
setErrorMessage(null);
}}
>
{(close) => (
<div
className="pv4"
onClick={(e) => {
e.preventDefault();
e.stopPropagation();
}}
>
<div className="cf tc red">
<AlertIcon height="50px" width="50px" />
</div>
<div className="cf blue-dark tc">
{!deleteStatus && (
<>
<h3 className="barlow-condensed f3">
<FormattedMessage {...messages[`confirmDeleteTitle_${type}`]} />
</h3>
<div className="pt3">
<Button
className="bg-white blue-dark mr3"
onClick={() => {
setDeleteStatus(false);
close();
}}
>
<FormattedMessage {...messages.cancel} />
</Button>
<Button className="bg-primary white" onClick={() => deleteEntity()}>
<FormattedMessage {...messages.delete} />
</Button>
</div>
</>
)}
{deleteStatus === 'failure' && (
<>
<h3 className="barlow-condensed f3">
<FormattedMessage {...messages[`failure_${type}`]} />
</h3>
<p>{error}</p>
</>
)}
</div>
</div>
)}