Fix crash in processing of distribution list recipients.

fork-5.53.8
Alex Hart 2022-10-11 12:38:57 -03:00 zatwierdzone przez Greyson Parrelli
rodzic 1e491d0b51
commit 83d1ab2eb5
1 zmienionych plików z 15 dodań i 1 usunięć

Wyświetl plik

@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.database.model.MessageId;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import java.util.LinkedList;
import java.util.List;
@ -86,7 +87,7 @@ public final class MessageDetailsRepository {
} else {
List<GroupReceiptDatabase.GroupReceiptInfo> receiptInfoList = SignalDatabase.groupReceipts().getGroupReceiptInfo(messageRecord.getId());
if (receiptInfoList.isEmpty()) {
if (receiptInfoList.isEmpty() && messageRecord.getRecipient().isGroup()) {
List<Recipient> group = SignalDatabase.groups().getGroupMembers(messageRecord.getRecipient().requireGroupId(), GroupDatabase.MemberSet.FULL_MEMBERS_EXCLUDING_SELF);
for (Recipient recipient : group) {
@ -98,6 +99,19 @@ public final class MessageDetailsRepository {
getNetworkFailure(messageRecord, recipient),
getKeyMismatchFailure(messageRecord, recipient)));
}
} else if (receiptInfoList.isEmpty() && messageRecord.getRecipient().isDistributionList()) {
List<RecipientId> distributionList = SignalDatabase.distributionLists().getMembers(messageRecord.getRecipient().requireDistributionListId());
List<Recipient> resolved = Recipient.resolvedList(distributionList);
for (Recipient recipient : resolved) {
recipients.add(new RecipientDeliveryStatus(messageRecord,
recipient,
RecipientDeliveryStatus.Status.UNKNOWN,
false,
messageRecord.getReceiptTimestamp(),
getNetworkFailure(messageRecord, recipient),
getKeyMismatchFailure(messageRecord, recipient)));
}
} else {
for (GroupReceiptDatabase.GroupReceiptInfo info : receiptInfoList) {
Recipient recipient = Recipient.resolved(info.getRecipientId());