From 5a6ace9c4ce00e1e8d49dd8088cedcaa65c720f3 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 28 Jan 2022 15:31:46 +0100 Subject: [PATCH] Process UID command option --- app/src/main/java/com/sun/mail/imap/IMAPFolder.java | 6 ++++-- app/src/main/java/com/sun/mail/imap/IMAPMessage.java | 3 ++- .../main/java/eu/faircode/email/FragmentOptionsMisc.java | 4 +++- app/src/main/java/eu/faircode/email/MessageHelper.java | 4 ++++ 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/sun/mail/imap/IMAPFolder.java b/app/src/main/java/com/sun/mail/imap/IMAPFolder.java index db5cd48999..7e1c345421 100644 --- a/app/src/main/java/com/sun/mail/imap/IMAPFolder.java +++ b/app/src/main/java/com/sun/mail/imap/IMAPFolder.java @@ -1413,7 +1413,8 @@ public class IMAPFolder extends Folder implements UIDFolder, ResponseHandler { try { IMAPProtocol p = getProtocol(); if (p.hasCapability("X-UIDONLY") || - (eu.faircode.email.BuildConfig.DEBUG && p.hasCapability("UIDPLUS"))) { + (p.hasCapability("UIDPLUS") && + Boolean.parseBoolean(System.getProperty("fairemail.uid_command")))) { // Verizon FetchProfile fp = new FetchProfile(); fp.add(UIDFolder.FetchProfileItem.UID); @@ -2107,7 +2108,8 @@ public class IMAPFolder extends Folder implements UIDFolder, ResponseHandler { try { IMAPProtocol p = getProtocol(); if (p.hasCapability("X-UIDONLY") || - (eu.faircode.email.BuildConfig.DEBUG && p.hasCapability("UIDPLUS"))) { + (p.hasCapability("UIDPLUS") && + Boolean.parseBoolean(System.getProperty("fairemail.uid_command")))) { // Verizon FetchProfile fp = new FetchProfile(); fp.add(UIDFolder.FetchProfileItem.UID); diff --git a/app/src/main/java/com/sun/mail/imap/IMAPMessage.java b/app/src/main/java/com/sun/mail/imap/IMAPMessage.java index f01ec71fde..c6004f3067 100644 --- a/app/src/main/java/com/sun/mail/imap/IMAPMessage.java +++ b/app/src/main/java/com/sun/mail/imap/IMAPMessage.java @@ -1113,7 +1113,8 @@ public class IMAPMessage extends MimeMessage implements ReadableMime { checkExpunged(); // Insure that this message is not expunged if (p.hasCapability("X-UIDONLY") || "imap.mail.yahoo.co.jp".equals(p.getInetAddress().getHostName()) || - (eu.faircode.email.BuildConfig.DEBUG && p.hasCapability("UIDPLUS"))) { + (p.hasCapability("UIDPLUS") && + Boolean.parseBoolean(System.getProperty("fairemail.uid_command")))) { // Verizon // Yahoo: NO [CANNOT] STORE It's not possible to perform specified operation long uid = getUID(); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index b551b40c48..964bb7400f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -897,6 +897,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { prefs.edit().putBoolean("uid_command", checked).apply(); + System.setProperty("fairemail.uid_command", Boolean.toString(checked)); + ServiceSynchronize.reload(compoundButton.getContext(), null, true, "uid_command"); } }); @@ -913,7 +915,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { prefs.edit().putBoolean("uid_expunge", checked).apply(); - ServiceSynchronize.reload(compoundButton.getContext(), null, true, "perform_expunge"); + ServiceSynchronize.reload(compoundButton.getContext(), null, true, "uid_expunge"); } }); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 6914e13b26..da0d043d57 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -236,6 +236,10 @@ public class MessageHelper { System.setProperty("mail.mime.contentdisposition.strict", "false"); // default true //System.setProperty("mail.imap.parse.debug", "true"); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean uid_command = prefs.getBoolean("uid_command", false); + System.setProperty("fairemail.uid_command", Boolean.toString(uid_command)); } static Properties getSessionProperties() {