diff --git a/app/src/main/java/eu/faircode/email/AdapterRule.java b/app/src/main/java/eu/faircode/email/AdapterRule.java index 0938562760..8abb090086 100644 --- a/app/src/main/java/eu/faircode/email/AdapterRule.java +++ b/app/src/main/java/eu/faircode/email/AdapterRule.java @@ -374,15 +374,18 @@ public class AdapterRule extends RecyclerView.Adapter { if (rule == null) return 0; - JSONObject jcondition = new JSONObject(rule.condition); - JSONObject jheader = jcondition.optJSONObject("header"); - if (jheader != null) - throw new IllegalArgumentException(context.getString(R.string.title_rule_no_headers)); - List ids = db.message().getMessageIdsByFolder(rule.folder); if (ids == null) return 0; + // Check header conditions + for (long mid : ids) { + EntityMessage message = db.message().getMessage(mid); + if (message == null || message.ui_hide) + continue; + rule.matches(context, message, null, null); + } + int applied = 0; for (long mid : ids) try { diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 78c14fb949..7a4eb65f43 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -1172,8 +1172,18 @@ public class FragmentFolders extends FragmentBase { List ids = db.message().getMessageIdsByFolder(fid); if (ids == null) return 0; + EntityLog.log(context, "Executing rules messages=" + ids.size()); + // Check header conditions + for (long mid : ids) { + EntityMessage message = db.message().getMessage(mid); + if (message == null || message.ui_hide) + continue; + for (EntityRule rule : rules) + rule.matches(context, message, null, null); + } + int applied = 0; for (long mid : ids) try {