From dc1c71f348cc8e51ecc0d943c7ae35c78b5f8948 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 28 Dec 2020 09:23:42 +0100 Subject: [PATCH] Sync similar --- app/src/main/java/eu/faircode/email/Core.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index bd5e4de41a..04e929ee67 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2719,6 +2719,7 @@ class Core { String[] labels = helper.getLabels(); boolean update = false; boolean process = false; + boolean syncSimilar = false; DB db = DB.getInstance(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); @@ -2769,6 +2770,9 @@ class Core { } } + if (dup.seen != seen || dup.answered != answered || dup.flagged != flagged) + syncSimilar = true; + if (dup.flagged && dup.color != null) color = dup.color; } @@ -3033,6 +3037,7 @@ class Core { if (seen) message.ui_ignored = true; Log.i(folder.name + " updated id=" + message.id + " uid=" + message.uid + " seen=" + seen); + syncSimilar = true; } if ((!message.answered.equals(answered) || !message.ui_answered.equals(message.answered)) && @@ -3041,6 +3046,7 @@ class Core { message.answered = answered; message.ui_answered = answered; Log.i(folder.name + " updated id=" + message.id + " uid=" + message.uid + " answered=" + answered); + syncSimilar = true; } if ((!message.flagged.equals(flagged) || !message.ui_flagged.equals(flagged)) && @@ -3051,6 +3057,7 @@ class Core { if (!flagged) message.color = null; Log.i(folder.name + " updated id=" + message.id + " uid=" + message.uid + " flagged=" + flagged); + syncSimilar = true; } if (!Objects.equals(flags, message.flags)) { @@ -3134,6 +3141,24 @@ class Core { Log.d(folder.name + " unchanged uid=" + uid); } + if (syncSimilar && account.isGmail()) + for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid)) { + if (similar.seen != message.seen) { + Log.i(folder.name + " Synchronize similar id=" + similar.id + " seen=" + message.seen); + db.message().setMessageSeen(similar.id, message.seen); + db.message().setMessageUiSeen(similar.id, message.seen); + } + if (similar.answered != message.answered) { + Log.i(folder.name + " Synchronize similar id=" + similar.id + " answered=" + message.answered); + db.message().setMessageAnswered(similar.id, message.answered); + } + if (similar.flagged != flagged) { + Log.i(folder.name + " Synchronize similar id=" + similar.id + " flagged=" + message.flagged); + db.message().setMessageFlagged(similar.id, message.flagged); + db.message().setMessageUiFlagged(similar.id, message.flagged, flagged ? similar.color : null); + } + } + List fkeywords = new ArrayList<>(Arrays.asList(folder.keywords)); for (String keyword : keywords)