From 92201dcd9010c77966f871801b465309f8a438cf Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 1 Aug 2022 09:56:46 -0400 Subject: [PATCH] Properly set the isRecipientUpdate flag on story sends. --- .../securesms/messages/GroupSendUtil.java | 4 +-- .../api/SignalServiceMessageSender.java | 25 +++++++++++++------ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java b/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java index 3df99aaf2d..df3235d560 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java @@ -636,7 +636,7 @@ public final class GroupSendUtil { boolean isRecipientUpdate) throws NoSessionException, UntrustedIdentityException, InvalidKeyException, IOException, InvalidRegistrationIdException { - return messageSender.sendGroupStory(distributionId, Optional.ofNullable(groupId).map(GroupId::getDecodedId), targets, access, message, getSentTimestamp(), manifest); + return messageSender.sendGroupStory(distributionId, Optional.ofNullable(groupId).map(GroupId::getDecodedId), targets, access, isRecipientUpdate, message, getSentTimestamp(), manifest); } @Override @@ -648,7 +648,7 @@ public final class GroupSendUtil { @Nullable CancelationSignal cancelationSignal) throws IOException, UntrustedIdentityException { - return messageSender.sendStory(targets, access, message, getSentTimestamp(), manifest); + return messageSender.sendStory(targets, access, isRecipientUpdate, message, getSentTimestamp(), manifest); } @Override diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java index 2534729b86..a2d2718a4d 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java @@ -252,6 +252,7 @@ public class SignalServiceMessageSender { public List sendStory(List recipients, List> unidentifiedAccess, + boolean isRecipientUpdate, SignalServiceStoryMessage message, long timestamp, Set manifest) @@ -260,21 +261,23 @@ public class SignalServiceMessageSender { Content content = createStoryContent(message); EnvelopeContent envelopeContent = EnvelopeContent.encrypted(content, ContentHint.RESENDABLE, Optional.empty()); List sendMessageResults = sendMessage(recipients, getTargetUnidentifiedAccess(unidentifiedAccess), timestamp, envelopeContent, false, null, null); - SignalServiceSyncMessage syncMessage = createSelfSendSyncMessageForStory(message, timestamp, manifest); - sendSyncMessage(syncMessage, Optional.empty()); + if (store.isMultiDevice()) { + SignalServiceSyncMessage syncMessage = createSelfSendSyncMessageForStory(message, timestamp, isRecipientUpdate, manifest); + sendSyncMessage(syncMessage, Optional.empty()); + } return sendMessageResults; } /** - * Send a typing indicator to a group using sender key. Doesn't bother with return results, since these are best-effort. - * @return + * Send a story using sender key. */ public List sendGroupStory(DistributionId distributionId, Optional groupId, List recipients, List unidentifiedAccess, + boolean isRecipientUpdate, SignalServiceStoryMessage message, long timestamp, Set manifest) @@ -282,9 +285,11 @@ public class SignalServiceMessageSender { { Content content = createStoryContent(message); List sendMessageResults = sendGroupMessage(distributionId, recipients, unidentifiedAccess, timestamp, content, ContentHint.RESENDABLE, groupId, false, SenderKeyGroupEvents.EMPTY); - SignalServiceSyncMessage syncMessage = createSelfSendSyncMessageForStory(message, timestamp, manifest); - sendSyncMessage(syncMessage, Optional.empty()); + if (store.isMultiDevice()) { + SignalServiceSyncMessage syncMessage = createSelfSendSyncMessageForStory(message, timestamp, isRecipientUpdate, manifest); + sendSyncMessage(syncMessage, Optional.empty()); + } return sendMessageResults; } @@ -1576,13 +1581,17 @@ public class SignalServiceMessageSender { return results; } - private SignalServiceSyncMessage createSelfSendSyncMessageForStory(SignalServiceStoryMessage message, long sentTimestamp, Set manifest) { + private SignalServiceSyncMessage createSelfSendSyncMessageForStory(SignalServiceStoryMessage message, + long sentTimestamp, + boolean isRecipientUpdate, + Set manifest) + { SentTranscriptMessage transcript = new SentTranscriptMessage(Optional.of(localAddress), sentTimestamp, Optional.empty(), 0, Collections.singletonMap(localAddress.getServiceId(), false), - false, + isRecipientUpdate, Optional.of(message), manifest);