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
public void onMessageWithErrorClicked(@NonNull MessageRecord messageRecord) {
if (messageRecord.hasFailedWithNetworkFailures()) {
if (messageRecord.isIdentityMismatchFailure()) {
SafetyNumberChangeDialog.show(this, messageRecord);
} else if (messageRecord.hasFailedWithNetworkFailures()) {
new AlertDialog.Builder(this)
.setMessage(R.string.conversation_activity__message_could_not_be_sent)
.setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(R.string.conversation_activity__send, (dialog, which) -> MessageSender.resend(this, messageRecord))
.show();
} else if (messageRecord.isIdentityMismatchFailure()) {
SafetyNumberChangeDialog.show(this, messageRecord);
} else {
startActivity(MessageDetailsActivity.getIntentForMessageDetails(this, messageRecord, messageRecord.getRecipient().getId(), messageRecord.getThreadId()));
}

View file

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