From 55779ac9151953448cce4ea7db0d347f01e1eaf8 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 17 Apr 2024 19:42:14 +0200 Subject: [PATCH] Expression: attachment count --- .../main/java/eu/faircode/email/EntityRule.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index 16673db24c..f19c761b5a 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -702,6 +702,7 @@ public class EntityRule { JSONObject jcondition = new JSONObject(rule.condition); if (!jcondition.has("expression")) return null; + String eval = jcondition.getString("expression"); List to = new ArrayList<>(); if (message != null && message.to != null) @@ -734,11 +735,24 @@ public class EntityRule { configuration.getOperatorDictionary().addOperator("Matches", new ContainsOperator(true)); - return new Expression(jcondition.getString("expression"), configuration) + Expression expression = new Expression(eval, configuration) .with("to", to) .with("from", from) .with("subject", message == null ? null : Arrays.asList(message.subject)) .with("text", doc == null ? null : Arrays.asList(doc.text())); + + if (message != null) { + boolean hasAttachments = false; + for (String variable : expression.getUsedVariables()) + if (!hasAttachments && "attachments".equals(variable)) { + hasAttachments = true; + DB db = DB.getInstance(context); + List attachments = db.attachment().getAttachments(message.id); + expression.with("attachments", attachments == null ? 0 : attachments.size()); + } + } + + return expression; } static boolean needsHeaders(Expression expression) {