mirror of
https://github.com/M66B/FairEmail.git
synced 2024-12-30 11:45:36 +00:00
Forward as attachment with account
This commit is contained in:
parent
f4f46dfed1
commit
9978910c0c
2 changed files with 15 additions and 3 deletions
|
@ -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))
|
||||
|
|
|
@ -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<Long> 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<Uri> 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) {
|
||||
|
|
Loading…
Reference in a new issue