From 80da26cc229fd33da5f1c92f0e6946113a902231 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 30 Jul 2021 16:23:07 +0200 Subject: [PATCH] Added logging, refactor reforce sync --- .../java/eu/faircode/email/EntityFolder.java | 5 +++++ .../eu/faircode/email/ServiceSynchronize.java | 20 +++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityFolder.java b/app/src/main/java/eu/faircode/email/EntityFolder.java index 3da8f90396..5ee6f5ceff 100644 --- a/app/src/main/java/eu/faircode/email/EntityFolder.java +++ b/app/src/main/java/eu/faircode/email/EntityFolder.java @@ -324,6 +324,11 @@ public class EntityFolder extends EntityOrder implements Serializable { return jargs; } + static boolean isSyncForced(String args) throws JSONException { + JSONArray jargs = new JSONArray(args); + return jargs.optBoolean(5, false); + } + static int getIcon(String type) { if (EntityFolder.INBOX.equals(type)) return R.drawable.twotone_inbox_24; diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 5420f2e237..8e2054a23a 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1907,19 +1907,23 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences } else { if (folder.poll_count == 0) { // Cancel pending sync, for example when the folder is not set to poll + boolean fforce = false; List ops = db.operation().getOperations(folder.account, EntityOperation.SYNC); - if (ops.size() == 0) - EntityOperation.sync(this, folder.id, false); - else - for (EntityOperation op : ops) { - db.operation().deleteOperation(op.id); - op.id = null; - op.id = db.operation().insertOperation(op); + for (EntityOperation op : ops) + if (EntityFolder.isSyncForced(op.args)) { + fforce = true; + break; } + db.operation().deleteOperation(folder.id, EntityOperation.SYNC); + + EntityLog.log(this, folder.name + " queue sync poll"); + EntityOperation.sync(this, folder.id, false, fforce); } folder.poll_count = (folder.poll_count + 1) % folder.poll_factor; db.folder().setFolderPollCount(folder.id, folder.poll_count); - Log.i(folder.name + " poll count=" + folder.poll_count); + EntityLog.log(this, folder.name + + " poll count=" + folder.poll_count + + " factor=" + folder.poll_factor); } } } catch (Throwable ex) {