From 8defea14b8fe21a9b1d9a15016f0f475154c79bf Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 30 Nov 2018 08:56:33 +0100 Subject: [PATCH] Leave copy in archive if moving from archive Except when moving to junk/trash --- .../eu/faircode/email/ServiceSynchronize.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 2078d79bb8..44667aa4ec 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1547,24 +1547,31 @@ public class ServiceSynchronize extends LifecycleService { if (imessage == null) throw new MessageRemovedException(); - if (istore.hasCapability("MOVE")) { - Folder itarget = istore.getFolder(target.name); - ifolder.moveMessages(new Message[]{imessage}, itarget); - } else { - Log.w(Helper.TAG, "MOVE by DELETE/APPEND"); - - if (!EntityFolder.ARCHIVE.equals(folder.type)) { - imessage.setFlag(Flags.Flag.DELETED, true); - ifolder.expunge(); - } - + if (EntityFolder.ARCHIVE.equals(folder.type) && + !(EntityFolder.JUNK.equals(target.type) || EntityFolder.TRASH.equals(target.type))) { MimeMessageEx icopy = MessageHelper.from(this, message, isession); Folder itarget = istore.getFolder(target.name); itarget.appendMessages(new Message[]{icopy}); - } - if (EntityFolder.ARCHIVE.equals(folder.type)) db.message().setMessageUiHide(message.id, false); + + } else { + if (istore.hasCapability("MOVE")) { + Folder itarget = istore.getFolder(target.name); + ifolder.moveMessages(new Message[]{imessage}, itarget); + } else { + Log.w(Helper.TAG, "MOVE by DELETE/APPEND"); + + if (!EntityFolder.ARCHIVE.equals(folder.type)) { + imessage.setFlag(Flags.Flag.DELETED, true); + ifolder.expunge(); + } + + MimeMessageEx icopy = MessageHelper.from(this, message, isession); + Folder itarget = istore.getFolder(target.name); + itarget.appendMessages(new Message[]{icopy}); + } + } } private void doDelete(EntityFolder folder, IMAPFolder ifolder, EntityMessage message, JSONArray jargs, DB db) throws MessagingException, JSONException {