fix: mailbox deletion error handling

This commit is contained in:
Linus Rath
2026-04-02 11:24:11 +02:00
parent 8836f9cdca
commit 16557830ae
11 changed files with 34 additions and 3 deletions
+12 -2
View File
@@ -200,8 +200,18 @@ export function FolderSettings() {
await deleteMailbox(client, mailboxId);
setDeletingId(null);
toast.success(t('folder_deleted'));
} catch {
toast.error(t('error_delete'));
} catch (err: unknown) {
const jmapType = (err as Error & { jmapType?: string })?.jmapType;
switch (jmapType) {
case 'mailboxHasChild':
toast.error(t('error_delete_has_children'));
break;
case 'mailboxHasEmail':
toast.error(t('error_delete_has_email'));
break;
default:
toast.error(t('error_delete'));
}
} finally {
setIsLoading(false);
}
+4 -1
View File
@@ -1320,7 +1320,10 @@ export class JMAPClient implements IJMAPClient {
const result = response.methodResponses?.[0]?.[1];
if (result?.notDestroyed?.[mailboxId]) {
throw new Error(`Failed to delete mailbox: ${result.notDestroyed[mailboxId].type || 'unknown error'}`);
const err = result.notDestroyed[mailboxId];
const error = new Error(err.description || `Failed to delete mailbox: ${err.type || 'unknown error'}`);
(error as Error & { jmapType?: string }).jmapType = err.type;
throw error;
}
}
+2
View File
@@ -1155,6 +1155,8 @@
"error_create": "Ordner konnte nicht erstellt werden",
"error_rename": "Ordner konnte nicht umbenannt werden",
"error_delete": "Ordner konnte nicht gelöscht werden",
"error_delete_has_children": "Ordner kann nicht gelöscht werden: Er enthält noch Unterordner. Löschen oder verschieben Sie diese zuerst.",
"error_delete_has_email": "Ordner kann nicht gelöscht werden: Er enthält noch E-Mails. Verschieben oder löschen Sie diese zuerst.",
"error_role": "Ordnerrolle konnte nicht aktualisiert werden"
},
"advanced": {
+2
View File
@@ -1155,6 +1155,8 @@
"error_create": "Failed to create folder",
"error_rename": "Failed to rename folder",
"error_delete": "Failed to delete folder",
"error_delete_has_children": "Cannot delete folder: it still contains subfolders. Delete or move them first.",
"error_delete_has_email": "Cannot delete folder: it still contains emails. Move or delete them first.",
"error_role": "Failed to update folder role"
},
"advanced": {
+2
View File
@@ -1155,6 +1155,8 @@
"error_create": "Error al crear la carpeta",
"error_rename": "Error al renombrar la carpeta",
"error_delete": "Error al eliminar la carpeta",
"error_delete_has_children": "No se puede eliminar la carpeta: aún contiene subcarpetas. Elimínelas o muévalas primero.",
"error_delete_has_email": "No se puede eliminar la carpeta: aún contiene correos. Muévalos o elimínelos primero.",
"error_role": "Error al actualizar el rol de la carpeta"
},
"advanced": {
+2
View File
@@ -1155,6 +1155,8 @@
"error_create": "Échec de la création du dossier",
"error_rename": "Échec du renommage du dossier",
"error_delete": "Échec de la suppression du dossier",
"error_delete_has_children": "Impossible de supprimer le dossier : il contient encore des sous-dossiers. Supprimez-les ou déplacez-les d'abord.",
"error_delete_has_email": "Impossible de supprimer le dossier : il contient encore des e-mails. Déplacez-les ou supprimez-les d'abord.",
"error_role": "Échec de la mise à jour du rôle du dossier"
},
"advanced": {
+2
View File
@@ -1155,6 +1155,8 @@
"error_create": "Impossibile creare la cartella",
"error_rename": "Impossibile rinominare la cartella",
"error_delete": "Impossibile eliminare la cartella",
"error_delete_has_children": "Impossibile eliminare la cartella: contiene ancora sottocartelle. Eliminale o spostale prima.",
"error_delete_has_email": "Impossibile eliminare la cartella: contiene ancora email. Spostale o eliminale prima.",
"error_role": "Impossibile aggiornare il ruolo della cartella"
},
"advanced": {
+2
View File
@@ -1155,6 +1155,8 @@
"error_create": "フォルダーの作成に失敗しました",
"error_rename": "フォルダー名の変更に失敗しました",
"error_delete": "フォルダーの削除に失敗しました",
"error_delete_has_children": "フォルダーを削除できません:サブフォルダーが含まれています。先にサブフォルダーを削除または移動してください。",
"error_delete_has_email": "フォルダーを削除できません:メールが含まれています。先にメールを移動または削除してください。",
"error_role": "フォルダーの役割の更新に失敗しました"
},
"advanced": {
+2
View File
@@ -1155,6 +1155,8 @@
"error_create": "Map maken mislukt",
"error_rename": "Map hernoemen mislukt",
"error_delete": "Map verwijderen mislukt",
"error_delete_has_children": "Map kan niet worden verwijderd: deze bevat nog submappen. Verwijder of verplaats deze eerst.",
"error_delete_has_email": "Map kan niet worden verwijderd: deze bevat nog e-mails. Verplaats of verwijder deze eerst.",
"error_role": "Maprol bijwerken mislukt"
},
"advanced": {
+2
View File
@@ -1155,6 +1155,8 @@
"error_create": "Falha ao criar a pasta",
"error_rename": "Falha ao renomear a pasta",
"error_delete": "Falha ao excluir a pasta",
"error_delete_has_children": "Não é possível excluir a pasta: ela ainda contém subpastas. Exclua ou mova-as primeiro.",
"error_delete_has_email": "Não é possível excluir a pasta: ela ainda contém e-mails. Mova ou exclua-os primeiro.",
"error_role": "Falha ao atualizar a função da pasta"
},
"advanced": {
+2
View File
@@ -1155,6 +1155,8 @@
"error_create": "Не удалось создать папку",
"error_rename": "Не удалось переименовать папку",
"error_delete": "Не удалось удалить папку",
"error_delete_has_children": "Невозможно удалить папку: она содержит подпапки. Сначала удалите или переместите их.",
"error_delete_has_email": "Невозможно удалить папку: она содержит письма. Сначала переместите или удалите их.",
"error_role": "Не удалось обновить роль папки"
},
"advanced": {