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 3df99aaf2..df3235d56 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 2534729b8..a2d2718a4 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);