diff --git a/app/src/main/java/eu/faircode/email/AdapterOperation.java b/app/src/main/java/eu/faircode/email/AdapterOperation.java index b400f61bb2..7b6dd8a946 100644 --- a/app/src/main/java/eu/faircode/email/AdapterOperation.java +++ b/app/src/main/java/eu/faircode/email/AdapterOperation.java @@ -108,7 +108,7 @@ public class AdapterOperation extends RecyclerView.Adapter 0) { // Cross account move - long target = jargs.getLong(0); - Log.i(folder.name + " queuing ADD id=" + message.id + ":" + target); + long tid = jargs.getLong(0); + EntityFolder target = db.folder().getFolder(tid); + if (target == null) + throw new FolderNotFoundException(); + + Log.i(folder.name + " queuing ADD id=" + message.id + ":" + target.id); EntityOperation operation = new EntityOperation(); - operation.account = message.account; - operation.folder = target; + operation.account = target.account; + operation.folder = target.id; operation.message = message.id; operation.name = EntityOperation.ADD; operation.args = jargs.toString(); diff --git a/app/src/main/java/eu/faircode/email/EntityOperation.java b/app/src/main/java/eu/faircode/email/EntityOperation.java index 2990b14522..f95902e71d 100644 --- a/app/src/main/java/eu/faircode/email/EntityOperation.java +++ b/app/src/main/java/eu/faircode/email/EntityOperation.java @@ -289,14 +289,15 @@ public class EntityOperation { } // Cross account move - long folder = source.id; - if (!source.account.equals(target.account)) - if (message.raw != null && message.raw) { - name = ADD; - folder = target.id; - } else - name = RAW; - queue(context, message.account, folder, message.id, name, jargs); + if (source.account.equals(target.account)) + queue(context, message.account, source.id, message.id, name, jargs); + else { + if (message.raw != null && message.raw) + queue(context, target.account, target.id, message.id, ADD, jargs); + else + queue(context, source.account, source.id, message.id, RAW, jargs); + } + return; } else if (DELETE.equals(name))