From 11c1f685346cd4793135e6b612aa9874ba563049 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 25 Oct 2021 09:47:54 +0200 Subject: [PATCH] Refactoring --- app/src/main/java/eu/faircode/email/Core.java | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 033b29400f..dc24925368 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -412,7 +412,7 @@ class Core { break; case EntityOperation.DELETE: - onDelete(context, jargs, folder, message, (IMAPFolder) ifolder); + onDelete(context, jargs, account, folder, message, (IMAPFolder) ifolder); break; case EntityOperation.HEADERS: @@ -740,20 +740,7 @@ class Core { Long uid = null; - Message[] imessages; - // https://stackoverflow.com/questions/18891509/how-to-get-message-from-messageidterm-for-yahoo-imap-profile - if (account.isYahooJp()) { - Message[] itemps = ifolder.search(new ReceivedDateTerm(ComparisonTerm.GE, new Date())); - List tmp = new ArrayList<>(); - for (Message itemp : itemps) { - MessageHelper helper = new MessageHelper((MimeMessage) itemp, context); - if (msgid.equals(helper.getMessageID())) - tmp.add(itemp); - } - imessages = tmp.toArray(new Message[0]); - } else - imessages = ifolder.search(new MessageIDTerm(msgid)); - + Message[] imessages = findMsgId(context, account, ifolder, msgid); if (imessages != null) for (Message iexisting : imessages) { long muid = ifolder.getUID(iexisting); @@ -769,6 +756,21 @@ class Core { return uid; } + private static Message[] findMsgId(Context context, EntityAccount account, IMAPFolder ifolder, String msgid) throws MessagingException, IOException { + // https://stackoverflow.com/questions/18891509/how-to-get-message-from-messageidterm-for-yahoo-imap-profile + if (account.isYahooJp()) { + Message[] itemps = ifolder.search(new ReceivedDateTerm(ComparisonTerm.GE, new Date())); + List tmp = new ArrayList<>(); + for (Message itemp : itemps) { + MessageHelper helper = new MessageHelper((MimeMessage) itemp, context); + if (msgid.equals(helper.getMessageID())) + tmp.add(itemp); + } + return tmp.toArray(new Message[0]); + } else + return ifolder.search(new MessageIDTerm(msgid)); + } + private static Message findMessage(Context context, EntityFolder folder, EntityMessage message, POP3Store istore, POP3Folder ifolder) throws MessagingException, IOException { Map caps = istore.capabilities(); boolean hasUidl = caps.containsKey("UIDL"); @@ -1124,7 +1126,7 @@ class Core { // Some providers do not list the new message yet try { Log.i(folder.name + " searching for added msgid=" + message.id); - Message[] imessages = ifolder.search(new MessageIDTerm(message.msgid)); + Message[] imessages = findMsgId(context, account, ifolder, message.msgid); if (imessages != null) { Long found = null; @@ -1558,7 +1560,7 @@ class Core { } } - private static void onDelete(Context context, JSONArray jargs, EntityFolder folder, EntityMessage message, IMAPFolder ifolder) throws MessagingException { + private static void onDelete(Context context, JSONArray jargs, EntityAccount account, EntityFolder folder, EntityMessage message, IMAPFolder ifolder) throws MessagingException, IOException { // Delete message DB db = DB.getInstance(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); @@ -1597,7 +1599,7 @@ class Core { if (!TextUtils.isEmpty(message.msgid) && (!found || EntityFolder.DRAFTS.equals(folder.type))) try { - Message[] imessages = ifolder.search(new MessageIDTerm(message.msgid)); + Message[] imessages = findMsgId(context, account, ifolder, message.msgid); if (imessages == null) Log.w(folder.name + " search for msgid=" + message.msgid + " returned null"); else @@ -1605,6 +1607,7 @@ class Core { long muid = ifolder.getUID(iexisting); if (found && muid == message.uid) continue; + Log.i(folder.name + " deleting uid=" + muid); try { if (perform_expunge)