From 63c30a8bd0f120ccb2ac7929b85da232c5e216ee Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 26 Jun 2025 22:56:34 +0200 Subject: [PATCH] Correct multiple inboxes --- app/src/main/java/eu/faircode/email/Core.java | 13 ++++++++++--- app/src/main/java/eu/faircode/email/DaoFolder.java | 5 +++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index fd5c95c2b3..994de27c50 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2992,9 +2992,16 @@ class Core { try { db.beginTransaction(); - if (EntityFolder.INBOX.equals(type)) // Case insensitive - folder = db.folder().getFolderByType(account.id, type); - else + if (EntityFolder.INBOX.equals(type)) { // Case insensitive + List inboxes = db.folder().getFoldersByType(account.id, type); + if (inboxes == null || inboxes.isEmpty()) + folder = null; + else { + folder = inboxes.get(0); + for (int i = 1; i < inboxes.size(); i++) + db.folder().deleteFolder(inboxes.get(i).id); + } + } else folder = db.folder().getFolderByName(account.id, fullName); if (folder == null) { EntityFolder parent = null; diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index eff2fb4e24..ad149abc1f 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -236,6 +236,11 @@ public interface DaoFolder { " WHERE account = :account AND type = :type") EntityFolder getFolderByType(long account, String type); + @Query("SELECT folder.* FROM folder" + + " WHERE account = :account AND type = :type" + + " ORDER BY folder.id") + List getFoldersByType(long account, String type); + @Query("SELECT folder.* FROM folder" + " JOIN account ON account.id = folder.account" + " WHERE account.synchronize" +