From 11d82726333f7766cb249cfca3a18537e25df8ae Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 24 Jun 2019 08:34:17 +0200 Subject: [PATCH] Observe new folders --- .../java/eu/faircode/email/DaoFolder.java | 3 ++ .../eu/faircode/email/ServiceSynchronize.java | 32 ++++++++++--------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index e0e5c4573d..c5f4723f55 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -187,6 +187,9 @@ public interface DaoFolder { @Query("UPDATE folder SET state = :state WHERE id = :id") int setFolderState(long id, String state); + @Query("UPDATE folder SET state = :state WHERE account = :account") + int setFolderStates(long account, String state); + @Query("UPDATE folder SET sync_state = :state WHERE id = :id") int setFolderSyncState(long id, String state); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 01f3a16c29..4c5ecc7cc3 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -682,24 +682,10 @@ public class ServiceSynchronize extends LifecycleService { } }); - List folders = db.folder().getFolders(account.id); - Collections.sort(folders, new Comparator() { - @Override - public int compare(EntityFolder f1, EntityFolder f2) { - int s1 = EntityFolder.FOLDER_SORT_ORDER.indexOf(f1.type); - int s2 = EntityFolder.FOLDER_SORT_ORDER.indexOf(f2.type); - int s = Integer.compare(s1, s2); - if (s != 0) - return s; - - return f1.name.compareTo(f2.name); - } - }); // Initiate connection EntityLog.log(this, account.name + " connecting"); - for (EntityFolder folder : folders) - db.folder().setFolderState(folder.id, null); + db.folder().setFolderStates(account.id, null); db.account().setAccountState(account.id, "connecting"); try { @@ -747,6 +733,21 @@ public class ServiceSynchronize extends LifecycleService { // Open synchronizing folders final ExecutorService executor = Executors.newSingleThreadExecutor(Helper.backgroundThreadFactory); + + List folders = db.folder().getFolders(account.id); + Collections.sort(folders, new Comparator() { + @Override + public int compare(EntityFolder f1, EntityFolder f2) { + int s1 = EntityFolder.FOLDER_SORT_ORDER.indexOf(f1.type); + int s2 = EntityFolder.FOLDER_SORT_ORDER.indexOf(f2.type); + int s = Integer.compare(s1, s2); + if (s != 0) + return s; + + return f1.name.compareTo(f2.name); + } + }); + for (final EntityFolder folder : folders) { if (folder.synchronize && !folder.poll && capIdle) { Log.i(account.name + " sync folder " + folder.name); @@ -957,6 +958,7 @@ public class ServiceSynchronize extends LifecycleService { } else mapFolders.put(folder, null); + Log.i(folder.name + " observing"); handler.post(new Runnable() { @Override public void run() {