From be5f64011b3229d9f047d53bd1aae0725122f0aa Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 6 Nov 2019 17:36:22 +0100 Subject: [PATCH] Fixed message similarity for messages without ID --- app/src/main/java/eu/faircode/email/DaoMessage.java | 5 +++++ app/src/main/java/eu/faircode/email/EntityOperation.java | 9 ++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 18c38328a7..e9777e1341 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -259,6 +259,11 @@ public interface DaoMessage { " AND msgid = :msgid") List getMessageByMsgId(long account, String msgid); + @Query("SELECT * FROM message" + + " WHERE account = :account" + + " AND (id = :id OR msgid = :msgid)") + List getMessagesBySimilarity(long account, long id, String msgid); + @Query("SELECT COUNT(*) FROM message" + " WHERE folder = :folder" + " AND msgid = :msgid") diff --git a/app/src/main/java/eu/faircode/email/EntityOperation.java b/app/src/main/java/eu/faircode/email/EntityOperation.java index be322e1027..2aeda39904 100644 --- a/app/src/main/java/eu/faircode/email/EntityOperation.java +++ b/app/src/main/java/eu/faircode/email/EntityOperation.java @@ -32,7 +32,6 @@ import androidx.room.PrimaryKey; import org.json.JSONArray; import org.json.JSONException; -import org.json.JSONObject; import java.io.File; import java.io.IOException; @@ -122,7 +121,7 @@ public class EntityOperation { if (SEEN.equals(name)) { boolean seen = jargs.getBoolean(0); boolean ignore = jargs.optBoolean(1, true); - for (EntityMessage similar : db.message().getMessageByMsgId(message.account, message.msgid)) { + for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid)) { db.message().setMessageUiSeen(similar.id, seen); db.message().setMessageUiIgnored(similar.id, ignore); queue(context, similar.account, similar.folder, similar.id, name, jargs); @@ -132,14 +131,14 @@ public class EntityOperation { } else if (FLAG.equals(name)) { boolean flagged = jargs.getBoolean(0); Integer color = (jargs.length() > 1 && !jargs.isNull(1) ? jargs.getInt(1) : null); - for (EntityMessage similar : db.message().getMessageByMsgId(message.account, message.msgid)) { + for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid)) { db.message().setMessageUiFlagged(similar.id, flagged, flagged ? color : null); queue(context, similar.account, similar.folder, similar.id, name, jargs); } return; } else if (ANSWERED.equals(name)) { - for (EntityMessage similar : db.message().getMessageByMsgId(message.account, message.msgid)) { + for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid)) { db.message().setMessageUiAnswered(similar.id, jargs.getBoolean(0)); queue(context, similar.account, similar.folder, similar.id, name, jargs); } @@ -172,7 +171,7 @@ public class EntityOperation { " auto read=" + autoread + " flag=" + autounflag); if (autoread || autounflag) - for (EntityMessage similar : db.message().getMessageByMsgId(message.account, message.msgid)) { + for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid)) { if (autoread) db.message().setMessageUiSeen(similar.id, true); if (autounflag)