From 94fa9a13380efb0188299930ae793573dcc95a31 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 9 May 2026 09:29:41 +0200 Subject: [PATCH] Fixed checking for no support for user flags --- app/src/main/java/eu/faircode/email/Core.java | 8 ++++--- .../java/eu/faircode/email/MessageHelper.java | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 931470e4fe..cf4eeab6a5 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -5210,11 +5210,13 @@ class Core { if (!Helper.equal(message.keywords, keywords) && !folder.read_only && - (ifolder.getPermanentFlags().contains(Flags.Flag.USER) || keywords.length > 0)) { + (ifolder.getPermanentFlags().contains(Flags.Flag.USER) || MessageHelper.hasUserKeywords(keywords))) { + Log.i(folder.name + " updated id=" + message.id + " uid=" + message.uid + + " flags=" + ifolder.getPermanentFlags().contains(Flags.Flag.USER) + + " keywords=" + (message.keywords == null ? null : TextUtils.join(" ", message.keywords)) + + "/" + TextUtils.join(" ", keywords)); update = true; message.keywords = keywords; - Log.i(folder.name + " updated id=" + message.id + " uid=" + message.uid + - " keywords=" + TextUtils.join(" ", keywords)); message.importance = null; for (String keyword : keywords) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index c0cea4feb1..b8e73a70eb 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -302,6 +302,13 @@ public class MessageHelper { "$social" // mailbox.org )); + private static final List FLAG_USER = Collections.unmodifiableList(Arrays.asList( + FLAG_CLASSIFIED, + FLAG_FILTERED, + FLAG_LOW_IMPORTANCE, + FLAG_HIGH_IMPORTANCE + )); + // https://tools.ietf.org/html/rfc4021 static void setSystemProperties(Context context) { @@ -1591,6 +1598,22 @@ public class MessageHelper { return true; } + static boolean hasUserKeywords(String[] keywords) { + if (keywords == null) + return false; + for (String keyword : keywords) { + if (TextUtils.isEmpty(keyword)) + continue; + if (FLAG_USER.contains(keyword)) + return true; + if (FLAG_BLACKLIST.contains(keyword)) + continue; + if (!keyword.startsWith("$")) + return true; + } + return false; + } + String getMessageID() throws MessagingException { ensureEnvelope();