From d35f04d668969a0a4c888dfe7d1aced2b270f2f2 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 4 Jan 2021 12:21:51 +0100 Subject: [PATCH] Prevent classification loop --- .../eu/faircode/email/EntityOperation.java | 2 +- .../eu/faircode/email/MessageClassifier.java | 27 ++++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityOperation.java b/app/src/main/java/eu/faircode/email/EntityOperation.java index 6ab8411dfe..fb2446a62f 100644 --- a/app/src/main/java/eu/faircode/email/EntityOperation.java +++ b/app/src/main/java/eu/faircode/email/EntityOperation.java @@ -189,7 +189,7 @@ public class EntityOperation { autounflag = false; } - boolean auto_classified = false; + boolean auto_classified = message.auto_classified; if (jargs.opt(2) != null) { auto_classified = jargs.getBoolean(2); jargs.remove(2); diff --git a/app/src/main/java/eu/faircode/email/MessageClassifier.java b/app/src/main/java/eu/faircode/email/MessageClassifier.java index 9bcb0ee9ab..540863a112 100644 --- a/app/src/main/java/eu/faircode/email/MessageClassifier.java +++ b/app/src/main/java/eu/faircode/email/MessageClassifier.java @@ -94,7 +94,8 @@ public class MessageClassifier { " message=" + message.id + "@" + new Date(message.received) + ":" + message.subject + - " class=" + classified); + " class=" + classified + + " re=" + message.auto_classified); Integer m = classMessages.get(account.id).get(folder.name); if (target == null) { @@ -108,21 +109,23 @@ public class MessageClassifier { dirty = true; - if (classified != null) { - EntityFolder f = db.folder().getFolderByName(account.id, classified); - if (f != null && !f.id.equals(folder.id) && f.auto_classify && - (EntityFolder.JUNK.equals(f.type) || ActivityBilling.isPro(context))) - try { - db.beginTransaction(); + if (classified != null && !message.auto_classified) + try { + db.beginTransaction(); + + EntityFolder f = db.folder().getFolderByName(account.id, classified); + if (f != null && !f.id.equals(folder.id) && f.auto_classify && + (EntityFolder.JUNK.equals(f.type) || ActivityBilling.isPro(context))) { EntityOperation.queue(context, message, EntityOperation.MOVE, f.id, false, true); message.ui_hide = true; - - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); } - } + + db.setTransactionSuccessful(); + + } finally { + db.endTransaction(); + } } catch (Throwable ex) { Log.e(ex); }