From 8d4cfb2052c110b56d69029503299f8a852a3a2d Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 29 Jul 2021 09:11:51 +0200 Subject: [PATCH] Skip classifying filtered messages --- app/src/main/java/eu/faircode/email/Core.java | 4 ++++ app/src/main/java/eu/faircode/email/MessageClassifier.java | 1 + app/src/main/java/eu/faircode/email/MessageHelper.java | 2 ++ 3 files changed, 7 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index de2d281de9..4f5ac91416 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -3786,12 +3786,16 @@ class Core { DB db = DB.getInstance(context); try { + boolean executed = false; for (EntityRule rule : rules) if (rule.matches(context, message, imessage)) { rule.execute(context, message); + executed = true; if (rule.stop) break; } + if (executed) + EntityOperation.queue(context, message, EntityOperation.KEYWORD, MessageHelper.FLAG_FILTERED, true); } catch (Throwable ex) { Log.e(ex); db.message().setMessageError(message.id, Log.formatThrowable(ex)); diff --git a/app/src/main/java/eu/faircode/email/MessageClassifier.java b/app/src/main/java/eu/faircode/email/MessageClassifier.java index 7d219f2db4..04d16fa322 100644 --- a/app/src/main/java/eu/faircode/email/MessageClassifier.java +++ b/app/src/main/java/eu/faircode/email/MessageClassifier.java @@ -104,6 +104,7 @@ public class MessageClassifier { !classified.equals(folder.name) && !TextUtils.isEmpty(message.msgid) && !message.hasKeyword(MessageHelper.FLAG_CLASSIFIED) && + !message.hasKeyword(MessageHelper.FLAG_FILTERED) && !accountMsgIds.get(folder.account).contains(message.msgid) && !EntityFolder.JUNK.equals(folder.type)) { boolean pro = ActivityBilling.isPro(context); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 4a0760c99c..8bfa73aa12 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -138,6 +138,7 @@ public class MessageHelper { static final String FLAG_FORWARDED = "$Forwarded"; static final String FLAG_NOT_JUNK = "$NotJunk"; static final String FLAG_CLASSIFIED = "$Classified"; + static final String FLAG_FILTERED = "$Filtered"; // https://www.iana.org/assignments/imap-jmap-keywords/imap-jmap-keywords.xhtml // Not black listed: Gmail $Phishing @@ -145,6 +146,7 @@ public class MessageHelper { MessageHelper.FLAG_FORWARDED, MessageHelper.FLAG_NOT_JUNK, MessageHelper.FLAG_CLASSIFIED, // FairEmail + MessageHelper.FLAG_FILTERED, // FairEmail "$MDNSent", // https://tools.ietf.org/html/rfc3503 "$SubmitPending", "$Submitted",