From 45af78725a3a2b2537d0e1e19df0b0b877fa05df Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 22 Nov 2018 11:24:52 +0100 Subject: [PATCH] Low light archive/sent folder name when message duplicate --- .../java/eu/faircode/email/AdapterMessage.java | 3 +-- .../main/java/eu/faircode/email/DaoMessage.java | 14 ++++++++++++++ .../java/eu/faircode/email/ServiceSynchronize.java | 11 +++++------ .../java/eu/faircode/email/TupleMessageEx.java | 4 +++- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 5210d66a17..cb253e68b1 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -360,8 +360,7 @@ public class AdapterMessage extends PagedListAdapter :folder AND folder.type = '" + EntityFolder.OUTBOX + "')" + " AND NOT (folder.id <> :folder AND folder.type = '" + EntityFolder.DRAFTS + "') THEN 0 ELSE 1 END) AS unflagged" + ", (SELECT COUNT(a.id) FROM attachment a WHERE a.message = message.id) AS attachments" + + ", 0 AS duplicate" + ", MAX(CASE WHEN folder.id = :folder THEN message.id ELSE 0 END) AS dummy" + " FROM message" + " JOIN account ON account.id = message.account" + @@ -106,6 +108,16 @@ public interface DaoMessage { ", CASE WHEN message.ui_seen THEN 0 ELSE 1 END AS unseen" + ", CASE WHEN message.ui_flagged THEN 0 ELSE 1 END AS unflagged" + ", (SELECT COUNT(a.id) FROM attachment a WHERE a.message = message.id) AS attachments" + + + ", ((folder.type = '" + EntityFolder.ARCHIVE + "' " + + " OR folder.type = '" + EntityFolder.SENT + "')" + + " AND EXISTS (" + + " SELECT * FROM message m1" + + " JOIN folder f1 ON f1.id = m1.folder" + + " WHERE m1.id <> message.id" + + " AND m1.msgid = message.msgid" + + " AND f1.type <> folder.type)) AS duplicate" + + " FROM message" + " JOIN account ON account.id = message.account" + " LEFT JOIN identity ON identity.id = message.identity" + @@ -177,6 +189,7 @@ public interface DaoMessage { ", CASE WHEN message.ui_seen THEN 0 ELSE 1 END AS unseen" + ", CASE WHEN message.ui_flagged THEN 0 ELSE 1 END AS unflagged" + ", (SELECT COUNT(a.id) FROM attachment a WHERE a.message = message.id) AS attachments" + + ", 0 AS duplicate" + " FROM message" + " JOIN account ON account.id = message.account" + " LEFT JOIN identity ON identity.id = message.identity" + @@ -191,6 +204,7 @@ public interface DaoMessage { ", 1 AS unseen" + ", 0 AS unflagged" + ", 0 AS attachments" + + ", 0 AS duplicate" + " FROM message" + " JOIN account ON account.id = message.account" + " LEFT JOIN identity ON identity.id = message.identity" + diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 0880ad6564..d9e8cf7bd3 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1906,7 +1906,8 @@ public class ServiceSynchronize extends LifecycleService { " folder=" + dfolder.type + ":" + dup.folder + "/" + folder.type + ":" + folder.id + " msgid=" + dup.msgid + " thread=" + dup.thread); - if (dup.folder.equals(folder.id) || outbox) { + if (!EntityFolder.ARCHIVE.equals(dfolder.type) && + dup.folder.equals(folder.id) || outbox) { String thread = helper.getThreadId(uid); Log.i(Helper.TAG, folder.name + " found as id=" + dup.id + "/" + uid + " msgid=" + msgid + " thread=" + thread); @@ -1966,11 +1967,9 @@ public class ServiceSynchronize extends LifecycleService { message.identity = (identity == null ? null : identity.id); message.uid = uid; - if (!EntityFolder.ARCHIVE.equals(folder.type)) { - message.msgid = helper.getMessageID(); - if (TextUtils.isEmpty(message.msgid)) - Log.w(Helper.TAG, "No Message-ID id=" + message.id + " uid=" + message.uid); - } + message.msgid = helper.getMessageID(); + if (TextUtils.isEmpty(message.msgid)) + Log.w(Helper.TAG, "No Message-ID id=" + message.id + " uid=" + message.uid); message.references = TextUtils.join(" ", helper.getReferences()); message.inreplyto = helper.getInReplyTo(); diff --git a/app/src/main/java/eu/faircode/email/TupleMessageEx.java b/app/src/main/java/eu/faircode/email/TupleMessageEx.java index 5afac53ecc..5a42810086 100644 --- a/app/src/main/java/eu/faircode/email/TupleMessageEx.java +++ b/app/src/main/java/eu/faircode/email/TupleMessageEx.java @@ -29,6 +29,7 @@ public class TupleMessageEx extends EntityMessage { public int unseen; public int unflagged; public int attachments; + public boolean duplicate; @Override public boolean equals(Object obj) { @@ -43,7 +44,8 @@ public class TupleMessageEx extends EntityMessage { this.count == other.count && this.unseen == other.unseen && this.unflagged == other.unflagged && - this.attachments == other.attachments); + this.attachments == other.attachments && + this.duplicate == other.duplicate); } return super.equals(obj); }