From 0cb5b3e074ec408f5cd329cad7baa240a29a4f37 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 4 Feb 2019 10:08:09 +0000 Subject: [PATCH] Fixed folder synchronization --- .../java/eu/faircode/email/DaoFolder.java | 2 +- .../eu/faircode/email/ServiceSynchronize.java | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index 4c5adc3a90..cb6af914db 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -198,7 +198,7 @@ public interface DaoFolder { @Query("UPDATE folder SET last_sync = :last_sync WHERE id = :id") int setFolderSync(long id, long last_sync); - @Query("UPDATE folder SET tbc = 0 WHERE id = :id") + @Query("UPDATE folder SET tbc = null WHERE id = :id") int resetFolderTbc(long id); @Query("UPDATE folder SET tbd = 1 WHERE id = :id") diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 4e96caaead..98394cd366 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -2187,22 +2187,25 @@ public class ServiceSynchronize extends LifecycleService { Log.i("Start sync folders account=" + account.name); List names = new ArrayList<>(); - for (EntityFolder folder : db.folder().getFolders(account.id)) { + for (EntityFolder folder : db.folder().getFolders(account.id)) if (folder.tbc != null) { + Log.i(folder.name + " creating"); IMAPFolder ifolder = (IMAPFolder) istore.getFolder(folder.name); - ifolder.create(Folder.HOLDS_MESSAGES); - db.folder().resetFolderTbc(folder.id); - } - - if (folder.tbd == null) - names.add(folder.name); - else { + try { + ifolder.create(Folder.HOLDS_MESSAGES); + db.folder().resetFolderTbc(folder.id); + } catch (Throwable ex) { + reportError(account, folder, ex); + db.folder().deleteFolder(folder.id); + } + } else if (folder.tbd != null) { + Log.i(folder.name + " deleting"); IMAPFolder ifolder = (IMAPFolder) istore.getFolder(folder.name); if (ifolder.exists()) ifolder.delete(false); db.folder().deleteFolder(folder.id); - } - } + } else + names.add(folder.name); Log.i("Local folder count=" + names.size()); Folder defaultFolder = istore.getDefaultFolder();