From 0ed228f5ff52311329c8be62fc8fcb380348c9df Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 25 Nov 2018 14:56:12 +0100 Subject: [PATCH] Improvements --- .../eu/faircode/email/ServiceSynchronize.java | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 436e92525c..8978688a38 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1425,6 +1425,9 @@ public class ServiceSynchronize extends LifecycleService { private void doSeen(EntityFolder folder, IMAPFolder ifolder, EntityMessage message, JSONArray jargs, DB db) throws MessagingException, JSONException { // Mark message (un)seen + if (!ifolder.getPermanentFlags().contains(Flags.Flag.SEEN)) + return; + boolean seen = jargs.getBoolean(0); if (message.seen.equals(seen)) return; @@ -1440,6 +1443,9 @@ public class ServiceSynchronize extends LifecycleService { private void doAnswered(EntityFolder folder, IMAPFolder ifolder, EntityMessage message, JSONArray jargs, DB db) throws MessagingException, JSONException { // Mark message (un)answered + if (!ifolder.getPermanentFlags().contains(Flags.Flag.ANSWERED)) + return; + boolean answered = jargs.getBoolean(0); if (message.answered.equals(answered)) return; @@ -1455,6 +1461,9 @@ public class ServiceSynchronize extends LifecycleService { private void doFlag(EntityFolder folder, IMAPFolder ifolder, EntityMessage message, JSONArray jargs, DB db) throws MessagingException, JSONException { // Star/unstar message + if (!ifolder.getPermanentFlags().contains(Flags.Flag.FLAGGED)) + return; + boolean flagged = jargs.getBoolean(0); if (message.flagged.equals(flagged)) return; @@ -1470,6 +1479,9 @@ public class ServiceSynchronize extends LifecycleService { private void doKeyword(EntityFolder folder, IMAPFolder ifolder, EntityMessage message, JSONArray jargs, DB db) throws MessagingException, JSONException { // Set/reset user flag + if (!ifolder.getPermanentFlags().contains(Flags.Flag.USER)) + return; + // https://tools.ietf.org/html/rfc3501#section-2.3.2 String keyword = jargs.getString(0); boolean set = jargs.getBoolean(1); @@ -2096,39 +2108,45 @@ public class ServiceSynchronize extends LifecycleService { attachment.id = db.attachment().insertAttachment(attachment); } } else { + boolean update = false; + if (!message.seen.equals(seen) || !message.seen.equals(message.ui_seen)) { + update = true; message.seen = seen; message.ui_seen = seen; - db.message().updateMessage(message); Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " uid=" + message.uid + " seen=" + seen); } if (!message.answered.equals(answered) || !message.answered.equals(message.ui_answered)) { + update = true; message.answered = answered; message.ui_answered = answered; - db.message().updateMessage(message); Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " uid=" + message.uid + " answered=" + answered); } if (!message.flagged.equals(flagged) || !message.flagged.equals(message.ui_flagged)) { + update = true; message.flagged = flagged; message.ui_flagged = flagged; - db.message().updateMessage(message); Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " uid=" + message.uid + " flagged=" + flagged); } - if (message.ui_hide) { + if (!Helper.equal(message.keywords, keywords)) { + update = true; + message.keywords = keywords; + Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " uid=" + message.uid + + " keywords=" + TextUtils.join(" ", keywords)); + } + + if (!update && message.ui_hide) { + update = true; message.ui_hide = false; db.message().updateMessage(message); Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " uid=" + message.uid + " unhide"); } - if (!Helper.equal(message.keywords, keywords)) { - message.keywords = keywords; + if (update) db.message().updateMessage(message); - Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " uid=" + message.uid + - " keywords=" + TextUtils.join(" ", keywords)); - } } return message.id;