1
0
Fork 0
mirror of https://github.com/M66B/FairEmail.git synced 2025-02-22 22:21:18 +00:00

Refactoring

This commit is contained in:
M66B 2019-02-02 14:09:06 +00:00
parent 062cbf4121
commit b0112b3002

View file

@ -1733,18 +1733,7 @@ public class ServiceSynchronize extends LifecycleService {
imessage.setFlag(Flags.Flag.DRAFT, true); imessage.setFlag(Flags.Flag.DRAFT, true);
// Add message // Add message
long uid; long uid = append(istore, ifolder, imessage, message.msgid);
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);
}
Log.i(folder.name + " appended id=" + message.id + " uid=" + uid); Log.i(folder.name + " appended id=" + message.id + " uid=" + uid);
db.message().setMessageUid(message.id, uid); db.message().setMessageUid(message.id, uid);
@ -1833,18 +1822,7 @@ public class ServiceSynchronize extends LifecycleService {
icopy.setFlag(Flags.Flag.DRAFT, true); icopy.setFlag(Flags.Flag.DRAFT, true);
// Append target // Append target
long uid; long uid = append(istore, itarget, icopy, message.msgid);
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);
}
Log.i(folder.name + " appended id=" + message.id + " uid=" + uid); Log.i(folder.name + " appended id=" + message.id + " uid=" + uid);
db.message().setMessageUid(message.id, uid); db.message().setMessageUid(message.id, uid);
@ -2164,22 +2142,29 @@ public class ServiceSynchronize extends LifecycleService {
parts.downloadAttachment(this, db, attachment.id, sequence); parts.downloadAttachment(this, db, attachment.id, sequence);
} }
private long getUid(EntityFolder folder, IMAPFolder ifolder, String msgid) throws MessagingException { private long append(IMAPStore istore, IMAPFolder ifolder, Message imessage, String msgid) throws MessagingException {
long uid = -1; if (istore.hasCapability("UIDPLUS")) {
Message[] messages = ifolder.search(new MessageIDTerm(msgid)); AppendUID[] uids = ifolder.appendUIDMessages(new Message[]{imessage});
if (messages != null) if (uids == null || uids.length == 0)
for (Message message : messages) { throw new MessageRemovedException("Message not appended");
long muid = ifolder.getUID(message); return uids[0].uid;
Log.i(folder.name + " " + msgid + " uid=" + muid); } else {
// RFC3501: Unique identifiers are assigned in a strictly ascending fashion ifolder.appendMessages(new Message[]{imessage});
if (muid > uid) long uid = -1;
uid = muid; 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) if (uid < 0)
throw new MessageRemovedException("uid not found"); throw new MessageRemovedException("uid not found");
return uid; return uid;
}
} }
private void synchronizeFolders(EntityAccount account, IMAPStore istore, ServiceState state) throws MessagingException { private void synchronizeFolders(EntityAccount account, IMAPStore istore, ServiceState state) throws MessagingException {