From 10390383b7cb25df344dea78e0023503e94e21ee Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 24 Jan 2019 07:13:54 +0000 Subject: [PATCH] Fixed move --- .../eu/faircode/email/EntityOperation.java | 18 ++++++++++++++++-- .../eu/faircode/email/ServiceSynchronize.java | 18 +++++++++++------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityOperation.java b/app/src/main/java/eu/faircode/email/EntityOperation.java index 8e049e2900..0c08df1543 100644 --- a/app/src/main/java/eu/faircode/email/EntityOperation.java +++ b/app/src/main/java/eu/faircode/email/EntityOperation.java @@ -20,6 +20,8 @@ package eu.faircode.email; */ import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; import org.json.JSONArray; import org.json.JSONException; @@ -144,6 +146,16 @@ public class EntityOperation { db.message().setMessageUiAnswered(similar.id, jargs.getBoolean(0)); else if (MOVE.equals(name)) { + // Parameters: + // 0: target folder id + // 1: allow auto read + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean autoread = prefs.getBoolean("autoread", false); + if (jargs.length() > 1) + autoread = (autoread && jargs.getBoolean(1)); + jargs.put(1, autoread); + EntityFolder source = db.folder().getFolder(message.folder); EntityFolder target = db.folder().getFolder(jargs.getLong(0)); @@ -190,7 +202,7 @@ public class EntityOperation { EntityAttachment.copy(context, db, message.id, newid); // Store new id for when source message was deleted - jargs.put(1, newid); + jargs.put(2, newid); } // Cross account move @@ -198,8 +210,10 @@ public class EntityOperation { name = ADD; folder = target.id; jargs = new JSONArray(); - if (newid != null) + if (newid != null) { jargs.put(0, newid); + jargs.put(1, autoread); + } } } else if (DELETE.equals(name)) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 2b4851b5ec..cc5c8f4de5 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1544,8 +1544,8 @@ public class ServiceSynchronize extends LifecycleService { db.message().deleteMessage(message.id); // Delete temporary copy in target folder - if (EntityOperation.MOVE.equals(op.name) && jargs.length() > 1) - db.message().deleteMessage(jargs.getInt(1)); + if (EntityOperation.MOVE.equals(op.name) && jargs.length() > 2) + db.message().deleteMessage(jargs.getInt(2)); if (EntityOperation.ADD.equals(op.name) && jargs.length() > 0) db.message().deleteMessage(jargs.getInt(0)); } else @@ -1676,6 +1676,12 @@ public class ServiceSynchronize extends LifecycleService { // Append message MimeMessage imessage = MessageHelper.from(this, message, isession); + if (jargs.length() > 1) { + boolean autoread = jargs.getBoolean(1); + if (autoread && !imessage.isSet(Flags.Flag.SEEN)) + imessage.setFlag(Flags.Flag.SEEN, true); + } + if (EntityFolder.DRAFTS.equals(folder.type)) { if (ifolder.getPermanentFlags().contains(Flags.Flag.DRAFT)) imessage.setFlag(Flags.Flag.DRAFT, true); @@ -1700,11 +1706,9 @@ public class ServiceSynchronize extends LifecycleService { if (imessage == null) throw new MessageRemovedException(); - if (jargs.length() == 1 || jargs.getBoolean(1)) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - if (prefs.getBoolean("autoread", false) && !imessage.isSet(Flags.Flag.SEEN)) - imessage.setFlag(Flags.Flag.SEEN, true); - } + boolean autoread = jargs.getBoolean(1); + if (autoread && !imessage.isSet(Flags.Flag.SEEN)) + imessage.setFlag(Flags.Flag.SEEN, true); if (istore.hasCapability("MOVE") && !EntityFolder.DRAFTS.equals(folder.type)) { Folder itarget = istore.getFolder(target.name);