diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 285022a2f0..269d92a702 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1280,19 +1280,9 @@ class Core { long start = new Date().getTime(); Folder[] ifolders = defaultFolder.list("*"); - List subscription = new ArrayList<>(); - try { - Folder[] isubscribed = defaultFolder.listSubscribed("*"); - for (Folder ifolder : isubscribed) - subscription.add(ifolder.getFullName()); - } catch (MessagingException ex) { - Log.e(account.name, ex); - } - long duration = new Date().getTime() - start; Log.i("Remote folder count=" + ifolders.length + - " subscribed=" + subscription.size() + " separator=" + separator + " fetched in " + duration + " ms"); @@ -1302,7 +1292,7 @@ class Core { String fullName = ifolder.getFullName(); String[] attrs = ((IMAPFolder) ifolder).getAttributes(); String type = EntityFolder.getType(attrs, fullName, false); - boolean subscribed = subscription.contains(fullName); + boolean subscribed = ifolder.isSubscribed(); boolean selectable = true; boolean inferiors = true; @@ -1322,13 +1312,14 @@ class Core { " attrs=" + TextUtils.join(" ", attrs)); if (type != null) { - EntityFolder folder = local.get(fullName); local.remove(fullName); - if (folder == null) { - try { - db.beginTransaction(); + EntityFolder folder; + try { + db.beginTransaction(); + folder = db.folder().getFolderByName(account.id, fullName); + if (folder == null) { folder = new EntityFolder(); folder.account = account.id; folder.name = fullName; @@ -1342,15 +1333,7 @@ class Core { folder.inferiors = inferiors; folder.id = db.folder().insertFolder(folder); Log.i(folder.name + " added type=" + folder.type); - db.setTransactionSuccessful(); - - } finally { - db.endTransaction(); - } - } else { - try { - db.beginTransaction(); - + } else { Log.i(folder.name + " exists type=" + folder.type); if (folder.subscribed == null || !folder.subscribed.equals(subscribed)) @@ -1371,11 +1354,11 @@ class Core { if (db.folder().getFolderByType(folder.account, EntityFolder.INBOX) == null) db.folder().setFolderType(folder.id, type); } - - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); } + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + Log.i("End sync folder"); } nameFolder.put(folder.name, folder);