From cefc0f8e4df92884caeb7034c59a38a7ff90333e Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 6 May 2026 07:07:48 +0200 Subject: [PATCH 1/4] Updated gradle to 9.2.1 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 47e2f7e882..f8699099f1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { // https://developer.android.com/studio/releases/gradle-plugin - id 'com.android.application' version '9.2.0' apply false + id 'com.android.application' version '9.2.1' apply false //id 'com.android.library' version '9.2.0' apply false // https://plugins.gradle.org/plugin/de.undercouch.download id 'de.undercouch.download' version '5.6.0' apply false From 29bfcaef73e05beb74a40ed49214f84c9a62d175 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 6 May 2026 08:00:37 +0200 Subject: [PATCH 2/4] Added Zoho Oauth --- app/src/main/res/xml/providers.xml | 62 +++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/app/src/main/res/xml/providers.xml b/app/src/main/res/xml/providers.xml index 0ee5dfed1b..bf3927b4dc 100644 --- a/app/src/main/res/xml/providers.xml +++ b/app/src/main/res/xml/providers.xml @@ -787,9 +787,10 @@ starttls="false" /> + + + + + + + From 24d05aa57cf925893761f9404432449dcdfee029 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 6 May 2026 08:33:37 +0200 Subject: [PATCH 3/4] Revert "Added Zoho Oauth" This reverts commit 29bfcaef73e05beb74a40ed49214f84c9a62d175. Zoho does not support OAuth for IMAP/SMTP --- app/src/main/res/xml/providers.xml | 62 +++++++----------------------- 1 file changed, 13 insertions(+), 49 deletions(-) diff --git a/app/src/main/res/xml/providers.xml b/app/src/main/res/xml/providers.xml index bf3927b4dc..0ee5dfed1b 100644 --- a/app/src/main/res/xml/providers.xml +++ b/app/src/main/res/xml/providers.xml @@ -787,10 +787,9 @@ starttls="false" /> - - - - - - - From 94fa9a13380efb0188299930ae793573dcc95a31 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 9 May 2026 09:29:41 +0200 Subject: [PATCH 4/4] 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();