From ec1f2e5a6c3580a0c1400f2f846e57f82f6826d2 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 9 Aug 2018 22:07:34 +0000 Subject: [PATCH] Fixed seen after append --- .../eu/faircode/email/ServiceSynchronize.java | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 9005a23975..a3d7d0edac 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -794,6 +794,7 @@ public class ServiceSynchronize extends LifecycleService { if (imessage == null) throw new MessageRemovedException(); + // Get folder Folder itarget = istore.getFolder(target.name); @@ -829,7 +830,6 @@ public class ServiceSynchronize extends LifecycleService { Session isession = Session.getInstance(props, null); MimeMessage icopy = MessageHelper.from(message, isession); itarget.appendMessages(new Message[]{icopy}); - icopy.setFlag(Flags.Flag.SEEN, message.seen); } // Delete original @@ -1122,6 +1122,8 @@ public class ServiceSynchronize extends LifecycleService { return 0; } + MessageHelper helper = new MessageHelper(imessage); + boolean seen = helper.getSeen(); DB db = DB.getInstance(this); @@ -1131,20 +1133,26 @@ public class ServiceSynchronize extends LifecycleService { message = db.message().getMessage(id); Log.i(Helper.TAG, "By id=" + id + " uid=" + (message == null ? "n/a" : message.uid)); } - if (message != null && message.folder != folder.id) { - if (EntityFolder.ARCHIVE.equals(folder.type)) - message = null; - else // Outbox to sent - message.folder = folder.id; - } + if (message != null) + if (message.folder == folder.id) { + if (message.uid == null) { + // Append (move) + message.uid = uid; + if (!seen) + imessage.setFlag(Flags.Flag.SEEN, true); + // Will be updated because message.seen <> seen + } + } else { + if (EntityFolder.ARCHIVE.equals(folder.type)) + message = null; + else // Outbox to sent + message.folder = folder.id; + } if (message == null) { message = db.message().getMessage(folder.id, uid); Log.i(Helper.TAG, "By uid=" + uid + " id=" + (message == null ? "n/a" : message.id)); } - MessageHelper helper = new MessageHelper(imessage); - boolean seen = helper.getSeen(); - if (message == null) { FetchProfile fp1 = new FetchProfile(); fp1.add(FetchProfile.Item.ENVELOPE); @@ -1189,23 +1197,14 @@ public class ServiceSynchronize extends LifecycleService { return 1; } else if (message.seen != seen) { - //if (message.uid == null) - message.uid = uid; // Complete move message.seen = seen; message.ui_seen = seen; db.message().updateMessage(message); Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " uid=" + message.uid); return -1; } else { - if (message.uid == null) { - message.uid = uid; - db.message().updateMessage(message); - Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " set uid=" + message.uid); - return -1; - } else { - Log.v(Helper.TAG, folder.name + " unchanged id=" + message.id + " uid=" + message.uid); - return 0; - } + Log.v(Helper.TAG, folder.name + " unchanged id=" + message.id + " uid=" + message.uid); + return 0; } } finally {