From 1790a15fdf01868cb710b60c3e170408110e04d7 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 23 Sep 2019 13:04:34 +0200 Subject: [PATCH] Check self/cc using all identities --- .../eu/faircode/email/AdapterMessage.java | 14 ++++----- .../java/eu/faircode/email/EntityMessage.java | 29 ++++++++++--------- .../eu/faircode/email/FragmentCompose.java | 8 ++--- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 5941500523..23b25267e6 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -2168,26 +2168,22 @@ public class AdapterMessage extends RecyclerView.Adapter() { + new SimpleTask>() { @Override - protected EntityIdentity onExecute(Context context, Bundle args) { - TupleMessageEx message = (TupleMessageEx) args.getSerializable("message"); - if (message.identity == null) - return null; - + protected List onExecute(Context context, Bundle args) { DB db = DB.getInstance(context); - return db.identity().getIdentity(message.identity); + return db.identity().getComposableIdentities(null); } @Override - protected void onExecuted(Bundle args, EntityIdentity identity) { + protected void onExecuted(Bundle args, List identities) { TupleMessageEx message = (TupleMessageEx) args.getSerializable("message"); TupleMessageEx amessage = getMessage(); if (amessage == null || !amessage.id.equals(message.id)) return; - Address[] recipients = message.getAllRecipients(identity); + Address[] recipients = message.getAllRecipients(identities); View anchor = bnvActions.findViewById(R.id.action_reply); PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(context, powner, anchor); diff --git a/app/src/main/java/eu/faircode/email/EntityMessage.java b/app/src/main/java/eu/faircode/email/EntityMessage.java index 475561974a..99d3d904c1 100644 --- a/app/src/main/java/eu/faircode/email/EntityMessage.java +++ b/app/src/main/java/eu/faircode/email/EntityMessage.java @@ -162,33 +162,34 @@ public class EntityMessage implements Serializable { return "<" + UUID.randomUUID() + "@localhost" + '>'; } - boolean replySelf(EntityIdentity identity) { - if (identity == null) - return false; - - Address[] senders = (reply == null || reply.length == 0 ? from : reply); - if (senders != null) - for (Address sender : senders) - if (identity.similarAddress(sender)) - return true; + boolean replySelf(List identities) { + if (identities != null) { + Address[] senders = (reply == null || reply.length == 0 ? from : reply); + if (senders != null) + for (Address sender : senders) + for (TupleIdentityEx identity : identities) + if (identity.similarAddress(sender)) + return true; + } return false; } - Address[] getAllRecipients(EntityIdentity identity) { + Address[] getAllRecipients(List identities) { List
addresses = new ArrayList<>(); - if (to != null && !replySelf(identity)) + if (to != null && !replySelf(identities)) addresses.addAll(Arrays.asList(to)); if (cc != null) addresses.addAll(Arrays.asList(cc)); // Filter self - if (identity != null) + if (identities != null) for (Address address : new ArrayList<>(addresses)) - if (identity.similarAddress(address)) - addresses.remove(address); + for (TupleIdentityEx identity : identities) + if (identity.similarAddress(address)) + addresses.remove(address); return addresses.toArray(new Address[0]); } diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 244f05e483..a231596767 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -2096,17 +2096,13 @@ public class FragmentCompose extends FragmentBase { data.draft.inreplyto = ref.msgid; data.draft.thread = ref.thread; - EntityIdentity ridentity = null; - if (ref.identity != null) - ridentity = db.identity().getIdentity(ref.identity); - if ("list".equals(action) && ref.list_post != null) data.draft.to = ref.list_post; else if ("receipt".equals(action) && ref.receipt_to != null) data.draft.to = ref.receipt_to; else { // Prevent replying to self - if (ref.replySelf(ridentity)) { + if (ref.replySelf(data.identities)) { data.draft.from = ref.from; data.draft.to = ref.to; } else { @@ -2116,7 +2112,7 @@ public class FragmentCompose extends FragmentBase { } if ("reply_all".equals(action)) - data.draft.cc = ref.getAllRecipients(ridentity); + data.draft.cc = ref.getAllRecipients(data.identities); else if ("receipt".equals(action)) data.draft.receipt_request = true;