From 44e62cfd57037e356c8184c4c5771e0aaaf38ae4 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 19 Aug 2021 08:09:08 +0200 Subject: [PATCH] Check if system folders were renamed --- app/src/main/java/eu/faircode/email/Core.java | 24 +++++++++++++++++++ .../java/eu/faircode/email/DaoFolder.java | 3 +++ 2 files changed, 27 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index f30a1116d3..966294aba3 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2040,6 +2040,30 @@ class Core { " separator=" + separator + " fetched in " + duration + " ms"); + // Check if system folders were renamed + for (Folder ifolder : ifolders) { + String fullName = ifolder.getFullName(); + if (TextUtils.isEmpty(fullName)) + continue; + + String[] attrs = ((IMAPFolder) ifolder).getAttributes(); + String type = EntityFolder.getType(attrs, fullName, false); + if (type != null && + !EntityFolder.USER.equals(type) && + !EntityFolder.SYSTEM.equals(type)) { + for (EntityFolder folder : local.values()) + if (type.equals(folder.type) && + !fullName.equals(folder.name) && + !istore.getFolder(folder.name).exists()) { + Log.e(account.host + + " renaming " + type + " folder" + + " from " + folder.name + " to " + fullName); + folder.name = fullName; + db.folder().setFolderName(folder.id, fullName); + } + } + } + Map nameFolder = new HashMap<>(); Map> parentFolders = new HashMap<>(); for (Folder ifolder : ifolders) { diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index 9e90d9038c..2b8042c5c2 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -281,6 +281,9 @@ public interface DaoFolder { @Query("UPDATE folder SET inferiors = :inferiors WHERE id = :id AND NOT (inferiors IS :inferiors)") int setFolderInferiors(long id, Boolean inferiors); + @Query("UPDATE folder SET name = :name WHERE id = :id AND NOT (name IS :name)") + int setFolderName(long id, String name); + @Query("UPDATE folder SET type = :type WHERE id = :id AND NOT (type IS :type)") int setFolderType(long id, String type);