From ed4ffce5ec3146696a91e8bd67fc8ed1ee456e3b Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 24 Feb 2022 16:32:37 +0100 Subject: [PATCH] Undo move trash / leave deleted --- app/src/main/java/eu/faircode/email/Core.java | 1 + .../eu/faircode/email/FragmentMessages.java | 36 +++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 86744a8de7..32d7e0c47c 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1600,6 +1600,7 @@ class Core { // Move from trash/drafts only if (!EntityFolder.DRAFTS.equals(folder.type) && + !(EntityFolder.INBOX.equals(folder.type) && account.leave_deleted) && !(EntityFolder.TRASH.equals(folder.type) && account.leave_deleted)) throw new IllegalArgumentException("Invalid POP3 folder" + " source=" + folder.type + " target=" + target.type + diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index e400ef22ab..02a177094a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -2523,9 +2523,12 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. } else if (EntityMessage.SWIPE_ACTION_DELETE.equals(action) || (action.equals(message.folder) && EntityFolder.TRASH.equals(message.folderType)) || (EntityFolder.TRASH.equals(actionType) && EntityFolder.JUNK.equals(message.folderType))) { - if (!(message.accountLeaveDeleted && EntityFolder.INBOX.equals(message.folderType))) + if (message.accountLeaveDeleted && EntityFolder.INBOX.equals(message.folderType)) + onSwipeTrash(message); + else { adapter.notifyItemChanged(pos); - onSwipeDelete(message); + onSwipeDelete(message); + } } else swipeFolder(message, action); } @@ -2691,6 +2694,35 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. ask.show(getParentFragmentManager(), "swipe:junk"); } + private void onSwipeTrash(@NonNull TupleMessageEx message) { + Bundle args = new Bundle(); + args.putLong("account", message.account); + + new SimpleTask() { + @Override + protected EntityFolder onExecute(Context context, Bundle args) throws Throwable { + long account = args.getLong("account"); + + DB db = DB.getInstance(context); + + return db.folder().getFolderByType(account, EntityFolder.TRASH); + } + + @Override + protected void onExecuted(Bundle args, EntityFolder trash) { + if (trash == null) + onSwipeDelete(message); + else + swipeFolder(message, trash.id); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } + }.execute(FragmentMessages.this, args, ""); + } + private void onSwipeDelete(@NonNull TupleMessageEx message) { Bundle args = new Bundle(); args.putString("question", getString(R.string.title_ask_delete));