Process identities per account

pull/162/head
M66B 5 years ago
parent fa47d2e23a
commit c380f7f683

@ -2269,8 +2269,12 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
new SimpleTask<List<TupleIdentityEx>>() {
@Override
protected List<TupleIdentityEx> onExecute(Context context, Bundle args) {
TupleMessageEx message = (TupleMessageEx) args.getSerializable("message");
if (message == null)
return null;
DB db = DB.getInstance(context);
return db.identity().getComposableIdentities(null);
return db.identity().getComposableIdentities(message.account);
}
@Override
@ -2281,7 +2285,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
if (amessage == null || !amessage.id.equals(message.id))
return;
Address[] recipients = message.getAllRecipients(identities);
Address[] recipients = message.getAllRecipients(identities, message.account);
View anchor = bnvActions.findViewById(R.id.action_reply);
PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(context, powner, anchor);

@ -170,21 +170,21 @@ public class EntityMessage implements Serializable {
return "<" + UUID.randomUUID() + "@localhost" + '>';
}
boolean replySelf(List<TupleIdentityEx> identities) {
boolean replySelf(List<TupleIdentityEx> identities, long account) {
Address[] senders = (reply == null || reply.length == 0 ? from : reply);
if (identities != null && senders != null)
for (Address sender : senders)
for (TupleIdentityEx identity : identities)
if (identity.similarAddress(sender))
if (identity.account == account && identity.similarAddress(sender))
return true;
return false;
}
Address[] getAllRecipients(List<TupleIdentityEx> identities) {
Address[] getAllRecipients(List<TupleIdentityEx> identities, long account) {
List<Address> addresses = new ArrayList<>();
if (to != null && !replySelf(identities))
if (to != null && !replySelf(identities, account))
addresses.addAll(Arrays.asList(to));
if (cc != null)
@ -194,7 +194,7 @@ public class EntityMessage implements Serializable {
if (identities != null)
for (Address address : new ArrayList<>(addresses))
for (TupleIdentityEx identity : identities)
if (identity.similarAddress(address))
if (identity.account == account && identity.similarAddress(address))
addresses.remove(address);
return addresses.toArray(new Address[0]);

@ -2088,7 +2088,7 @@ public class FragmentCompose extends FragmentBase {
data.draft.to = ref.receipt_to;
else {
// Prevent replying to self
if (ref.replySelf(data.identities)) {
if (ref.replySelf(data.identities, ref.account)) {
data.draft.from = ref.from;
data.draft.to = ref.to;
} else {
@ -2098,7 +2098,7 @@ public class FragmentCompose extends FragmentBase {
}
if ("reply_all".equals(action))
data.draft.cc = ref.getAllRecipients(data.identities);
data.draft.cc = ref.getAllRecipients(data.identities, ref.account);
else if ("receipt".equals(action)) {
data.draft.receipt = true;
data.draft.receipt_request = false;

Loading…
Cancel
Save