Fix group send with sender key failure due to mistmatch identity.

This commit is contained in:
Cody Henthorne 2022-01-20 20:39:49 -05:00
parent c2f953b097
commit 791c1ee8dd
2 changed files with 7 additions and 7 deletions

View file

@ -3646,14 +3646,14 @@ public class ConversationActivity extends PassphraseRequiredActivity
@Override @Override
public void onMessageWithErrorClicked(@NonNull MessageRecord messageRecord) { public void onMessageWithErrorClicked(@NonNull MessageRecord messageRecord) {
if (messageRecord.hasFailedWithNetworkFailures()) { if (messageRecord.isIdentityMismatchFailure()) {
SafetyNumberChangeDialog.show(this, messageRecord);
} else if (messageRecord.hasFailedWithNetworkFailures()) {
new AlertDialog.Builder(this) new AlertDialog.Builder(this)
.setMessage(R.string.conversation_activity__message_could_not_be_sent) .setMessage(R.string.conversation_activity__message_could_not_be_sent)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(R.string.conversation_activity__send, (dialog, which) -> MessageSender.resend(this, messageRecord)) .setPositiveButton(R.string.conversation_activity__send, (dialog, which) -> MessageSender.resend(this, messageRecord))
.show(); .show();
} else if (messageRecord.isIdentityMismatchFailure()) {
SafetyNumberChangeDialog.show(this, messageRecord);
} else { } else {
startActivity(MessageDetailsActivity.getIntentForMessageDetails(this, messageRecord, messageRecord.getRecipient().getId(), messageRecord.getThreadId())); startActivity(MessageDetailsActivity.getIntentForMessageDetails(this, messageRecord, messageRecord.getRecipient().getId(), messageRecord.getThreadId()));
} }

View file

@ -1745,12 +1745,12 @@ public class SignalServiceMessageSender {
.filter(r -> !r.isSuccess()) .filter(r -> !r.isSuccess())
.collect(Collectors.toList()); .collect(Collectors.toList());
Set<SignalServiceAddress> failedAddresses = trueFailures.stream() Set<ACI> failedAddresses = trueFailures.stream()
.map(SendMessageResult::getAddress) .map(result -> result.getAddress().getAci())
.collect(Collectors.toSet()); .collect(Collectors.toSet());
List<SendMessageResult> fakeNetworkFailures = recipients.stream() List<SendMessageResult> fakeNetworkFailures = recipients.stream()
.filter(r -> !failedAddresses.contains(r)) .filter(r -> !failedAddresses.contains(r.getAci()))
.map(SendMessageResult::networkFailure) .map(SendMessageResult::networkFailure)
.collect(Collectors.toList()); .collect(Collectors.toList());