diff --git a/web/src/objects/delete-object-dialog.tsx b/web/src/objects/delete-object-dialog.tsx index ce97f9e..9b3c4e7 100644 --- a/web/src/objects/delete-object-dialog.tsx +++ b/web/src/objects/delete-object-dialog.tsx @@ -20,9 +20,18 @@ export function DeleteObjectDialog({ id }: { id: string }) { const navigate = useNavigate(); const del = useDeleteObject(); const [open, setOpen] = useState(false); + const [error, setError] = useState(false); const onConfirm = async () => { - await del.mutateAsync(id); + setError(false); + try { + await del.mutateAsync(id); + } catch { + // Keep the dialog open so the user can retry or cancel; never let the + // rejected mutation escape as an unhandled promise rejection. + setError(true); + return; + } navigate("/objects"); }; @@ -39,6 +48,11 @@ export function DeleteObjectDialog({ id }: { id: string }) { {t("actions.delete")} {t("actions.confirmDelete")} + {error && ( +

+ {t("form.rejected")} +

+ )} {t("form.cancel")}