From ec07b7805ea27ae3e570de0af12eca81ce596950 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 21 May 2026 13:05:14 -0400 Subject: [PATCH] Fix incorrect sync message being sent when network drops group send response. --- .../securesms/jobs/PushGroupSendJob.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java index d2852fa370..9c86c9a0c4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java @@ -277,20 +277,23 @@ public final class PushGroupSendJob extends PushSendJob { } try { - GroupId.Push groupId = groupRecipient.requireGroupId().requirePush(); - Optional profileKey = getProfileKey(groupRecipient); - Optional sticker = getStickerFor(message); - List sharedContacts = getSharedContactsFor(message); - List previews = getPreviewsFor(message); - List mentions = getMentionsFor(message.getMentions()); - List bodyRanges = getBodyRanges(message); - SignalServiceDataMessage.PollCreate pollCreate = getPollCreate(message); - SignalServiceDataMessage.PollTerminate pollTerminate = getPollTerminate(message); - SignalServiceDataMessage.PinnedMessage pinnedMessage = getPinnedMessage(message); - List attachments = message.getAttachments().stream().filter(attachment -> !attachment.isSticker()).collect(Collectors.toList()); - List attachmentPointers = getAttachmentPointersFor(attachments); - boolean isRecipientUpdate = SignalDatabase.groupReceipts().getGroupReceiptInfo(messageId).stream() - .anyMatch(info -> info.getStatus() > GroupReceiptTable.STATUS_UNDELIVERED); + GroupId.Push groupId = groupRecipient.requireGroupId().requirePush(); + Optional profileKey = getProfileKey(groupRecipient); + Optional sticker = getStickerFor(message); + List sharedContacts = getSharedContactsFor(message); + List previews = getPreviewsFor(message); + List mentions = getMentionsFor(message.getMentions()); + List bodyRanges = getBodyRanges(message); + SignalServiceDataMessage.PollCreate pollCreate = getPollCreate(message); + SignalServiceDataMessage.PollTerminate pollTerminate = getPollTerminate(message); + SignalServiceDataMessage.PinnedMessage pinnedMessage = getPinnedMessage(message); + List attachments = message.getAttachments().stream().filter(attachment -> !attachment.isSticker()).collect(Collectors.toList()); + List 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 = SignalDatabase.groups().getGroup(groupId);