Fix incorrect sync message being sent when network drops group send response.

This commit is contained in:
Cody Henthorne
2026-05-21 13:05:14 -04:00
committed by Michelle Tang
parent 333e514a2f
commit ec07b7805e
@@ -277,20 +277,23 @@ public final class PushGroupSendJob extends PushSendJob {
}
try {
GroupId.Push groupId = groupRecipient.requireGroupId().requirePush();
Optional<byte[]> profileKey = getProfileKey(groupRecipient);
Optional<SignalServiceDataMessage.Sticker> sticker = getStickerFor(message);
List<SharedContact> sharedContacts = getSharedContactsFor(message);
List<SignalServicePreview> previews = getPreviewsFor(message);
List<SignalServiceDataMessage.Mention> mentions = getMentionsFor(message.getMentions());
List<BodyRange> bodyRanges = getBodyRanges(message);
SignalServiceDataMessage.PollCreate pollCreate = getPollCreate(message);
SignalServiceDataMessage.PollTerminate pollTerminate = getPollTerminate(message);
SignalServiceDataMessage.PinnedMessage pinnedMessage = getPinnedMessage(message);
List<Attachment> attachments = message.getAttachments().stream().filter(attachment -> !attachment.isSticker()).collect(Collectors.toList());
List<SignalServiceAttachment> attachmentPointers = getAttachmentPointersFor(attachments);
boolean isRecipientUpdate = SignalDatabase.groupReceipts().getGroupReceiptInfo(messageId).stream()
.anyMatch(info -> info.getStatus() > GroupReceiptTable.STATUS_UNDELIVERED);
GroupId.Push groupId = groupRecipient.requireGroupId().requirePush();
Optional<byte[]> profileKey = getProfileKey(groupRecipient);
Optional<SignalServiceDataMessage.Sticker> sticker = getStickerFor(message);
List<SharedContact> sharedContacts = getSharedContactsFor(message);
List<SignalServicePreview> previews = getPreviewsFor(message);
List<SignalServiceDataMessage.Mention> mentions = getMentionsFor(message.getMentions());
List<BodyRange> bodyRanges = getBodyRanges(message);
SignalServiceDataMessage.PollCreate pollCreate = getPollCreate(message);
SignalServiceDataMessage.PollTerminate pollTerminate = getPollTerminate(message);
SignalServiceDataMessage.PinnedMessage pinnedMessage = getPinnedMessage(message);
List<Attachment> attachments = message.getAttachments().stream().filter(attachment -> !attachment.isSticker()).collect(Collectors.toList());
List<SignalServiceAttachment> attachmentPointers = getAttachmentPointersFor(attachments);
boolean hasPreviouslyDeliveredRecipients = SignalDatabase.groupReceipts()
.getGroupReceiptInfo(messageId)
.stream()
.anyMatch(info -> info.getStatus() > GroupReceiptTable.STATUS_UNDELIVERED);
boolean isRecipientUpdate = hasPreviouslyDeliveredRecipients && SignalDatabase.messages().isSent(messageId);
if (message.getStoryType().isStory()) {
Optional<GroupRecord> groupRecord = SignalDatabase.groups().getGroup(groupId);