From 9978910c0cf2f4371337ec2a484d1ae944e25178 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 31 Jan 2022 20:15:17 +0100 Subject: [PATCH] Forward as attachment with account --- .../java/eu/faircode/email/ActivityCompose.java | 3 ++- .../faircode/email/FragmentDialogForwardRaw.java | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityCompose.java b/app/src/main/java/eu/faircode/email/ActivityCompose.java index d7c338aaf5..e3bae13458 100644 --- a/app/src/main/java/eu/faircode/email/ActivityCompose.java +++ b/app/src/main/java/eu/faircode/email/ActivityCompose.java @@ -226,7 +226,8 @@ public class ActivityCompose extends ActivityBase implements FragmentManager.OnB if (isShared(action)) { args.putString("action", "new"); - args.putLong("account", -1); + args.putLong("account", + intent.getLongExtra("fair:account", -1L)); } if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogForwardRaw.java b/app/src/main/java/eu/faircode/email/FragmentDialogForwardRaw.java index 0f325d689b..4463e42b41 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogForwardRaw.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogForwardRaw.java @@ -45,6 +45,7 @@ import java.io.File; import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class FragmentDialogForwardRaw extends FragmentDialogBase { private boolean enabled; @@ -79,6 +80,7 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { long[] ids = args.getLongArray("ids"); boolean threads = args.getBoolean("threads"); + Long aid = null; List result = new ArrayList<>(); DB db = DB.getInstance(context); @@ -99,6 +101,10 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { EntityAccount account = db.account().getAccount(message.account); if (account == null) continue; + if (aid == null) + aid = account.id; + else if (!Objects.equals(aid, account.id)) + aid = -1L; if (account.protocol == EntityAccount.TYPE_IMAP) { if (message.uid == null) @@ -132,6 +138,7 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { ServiceSynchronize.eval(context, "raw"); + args.putLong("account", aid == null ? -1L : aid); return Helper.toLongArray(result); } @@ -152,6 +159,7 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { if (remaining == 0) { ld.removeObserver(this); + getArguments().putLong("account", args.getLong("account")); getArguments().putLongArray("ids", ids); enabled = true; setButtonEnabled(enabled); @@ -171,7 +179,9 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { .setPositiveButton(R.string.title_send, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - send(getArguments().getLongArray("ids")); + long account = getArguments().getLong("account"); + long[] ids = getArguments().getLongArray("ids"); + send(account, ids); } }) .setNegativeButton(android.R.string.cancel, null) @@ -220,7 +230,7 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { super.onSaveInstanceState(outState); } - private void send(long[] ids) { + private void send(long account, long[] ids) { try { ArrayList uris = new ArrayList<>(); for (long id : ids) { @@ -234,6 +244,7 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase { send.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); send.setType("message/rfc822"); send.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + send.putExtra("fair:account", account); startActivity(send); } catch (Throwable ex) {