fix: mailbox deletion error handling
This commit is contained in:
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -1155,6 +1155,8 @@
|
||||
"error_create": "フォルダーの作成に失敗しました",
|
||||
"error_rename": "フォルダー名の変更に失敗しました",
|
||||
"error_delete": "フォルダーの削除に失敗しました",
|
||||
"error_delete_has_children": "フォルダーを削除できません:サブフォルダーが含まれています。先にサブフォルダーを削除または移動してください。",
|
||||
"error_delete_has_email": "フォルダーを削除できません:メールが含まれています。先にメールを移動または削除してください。",
|
||||
"error_role": "フォルダーの役割の更新に失敗しました"
|
||||
},
|
||||
"advanced": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -1155,6 +1155,8 @@
|
||||
"error_create": "Не удалось создать папку",
|
||||
"error_rename": "Не удалось переименовать папку",
|
||||
"error_delete": "Не удалось удалить папку",
|
||||
"error_delete_has_children": "Невозможно удалить папку: она содержит подпапки. Сначала удалите или переместите их.",
|
||||
"error_delete_has_email": "Невозможно удалить папку: она содержит письма. Сначала переместите или удалите их.",
|
||||
"error_role": "Не удалось обновить роль папки"
|
||||
},
|
||||
"advanced": {
|
||||
|
||||
Reference in New Issue
Block a user