kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix crash in processing of distribution list recipients.
rodzic
1e491d0b51
commit
83d1ab2eb5
|
@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.database.model.MessageId;
|
||||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
|
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -86,7 +87,7 @@ public final class MessageDetailsRepository {
|
||||||
} else {
|
} else {
|
||||||
List<GroupReceiptDatabase.GroupReceiptInfo> receiptInfoList = SignalDatabase.groupReceipts().getGroupReceiptInfo(messageRecord.getId());
|
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);
|
List<Recipient> group = SignalDatabase.groups().getGroupMembers(messageRecord.getRecipient().requireGroupId(), GroupDatabase.MemberSet.FULL_MEMBERS_EXCLUDING_SELF);
|
||||||
|
|
||||||
for (Recipient recipient : group) {
|
for (Recipient recipient : group) {
|
||||||
|
@ -98,6 +99,19 @@ public final class MessageDetailsRepository {
|
||||||
getNetworkFailure(messageRecord, recipient),
|
getNetworkFailure(messageRecord, recipient),
|
||||||
getKeyMismatchFailure(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 {
|
} else {
|
||||||
for (GroupReceiptDatabase.GroupReceiptInfo info : receiptInfoList) {
|
for (GroupReceiptDatabase.GroupReceiptInfo info : receiptInfoList) {
|
||||||
Recipient recipient = Recipient.resolved(info.getRecipientId());
|
Recipient recipient = Recipient.resolved(info.getRecipientId());
|
||||||
|
|
Ładowanie…
Reference in New Issue