From b0112b300223d74ea67f5bb687428a82e6172ce6 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 2 Feb 2019 14:09:06 +0000 Subject: [PATCH] Refactoring --- .../eu/faircode/email/ServiceSynchronize.java | 61 +++++++------------ 1 file changed, 23 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 86c9e572f5..f0dbd47d18 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1733,18 +1733,7 @@ public class ServiceSynchronize extends LifecycleService { imessage.setFlag(Flags.Flag.DRAFT, true); // Add message - long uid; - if (istore.hasCapability("UIDPLUS")) { - Log.i(folder.name + " append uid id=" + message.id); - AppendUID[] uids = ifolder.appendUIDMessages(new Message[]{imessage}); - if (uids == null || uids.length == 0) - throw new MessageRemovedException("Message not appended"); - uid = uids[0].uid; - } else { - Log.i(folder.name + " append id=" + message.id); - ifolder.appendMessages(new Message[]{imessage}); - uid = getUid(folder, ifolder, message.msgid); - } + long uid = append(istore, ifolder, imessage, message.msgid); Log.i(folder.name + " appended id=" + message.id + " uid=" + uid); db.message().setMessageUid(message.id, uid); @@ -1833,18 +1822,7 @@ public class ServiceSynchronize extends LifecycleService { icopy.setFlag(Flags.Flag.DRAFT, true); // Append target - long uid; - if (istore.hasCapability("UIDPLUS")) { - Log.i(folder.name + " move/append uid id=" + message.id); - AppendUID[] uids = itarget.appendUIDMessages(new Message[]{icopy}); - if (uids == null || uids.length == 0) - throw new MessageRemovedException("Message not move/appended"); - uid = uids[0].uid; - } else { - Log.i(folder.name + " move/append id=" + message.id); - itarget.appendMessages(new Message[]{icopy}); - uid = getUid(target, itarget, message.msgid); - } + long uid = append(istore, itarget, icopy, message.msgid); Log.i(folder.name + " appended id=" + message.id + " uid=" + uid); db.message().setMessageUid(message.id, uid); @@ -2164,22 +2142,29 @@ public class ServiceSynchronize extends LifecycleService { parts.downloadAttachment(this, db, attachment.id, sequence); } - private long getUid(EntityFolder folder, IMAPFolder ifolder, String msgid) throws MessagingException { - long uid = -1; - Message[] messages = ifolder.search(new MessageIDTerm(msgid)); - if (messages != null) - for (Message message : messages) { - long muid = ifolder.getUID(message); - Log.i(folder.name + " " + msgid + " uid=" + muid); - // RFC3501: Unique identifiers are assigned in a strictly ascending fashion - if (muid > uid) - uid = muid; - } + private long append(IMAPStore istore, IMAPFolder ifolder, Message imessage, String msgid) throws MessagingException { + if (istore.hasCapability("UIDPLUS")) { + AppendUID[] uids = ifolder.appendUIDMessages(new Message[]{imessage}); + if (uids == null || uids.length == 0) + throw new MessageRemovedException("Message not appended"); + return uids[0].uid; + } else { + ifolder.appendMessages(new Message[]{imessage}); + long uid = -1; + Message[] messages = ifolder.search(new MessageIDTerm(msgid)); + if (messages != null) + for (Message iappended : messages) { + long muid = ifolder.getUID(iappended); + // RFC3501: Unique identifiers are assigned in a strictly ascending fashion + if (muid > uid) + uid = muid; + } - if (uid < 0) - throw new MessageRemovedException("uid not found"); + if (uid < 0) + throw new MessageRemovedException("uid not found"); - return uid; + return uid; + } } private void synchronizeFolders(EntityAccount account, IMAPStore istore, ServiceState state) throws MessagingException {