Properly set the isRecipientUpdate flag on story sends.

fork-5.53.8
Greyson Parrelli 2022-08-01 09:56:46 -04:00
rodzic 855d74bbbf
commit 92201dcd90
2 zmienionych plików z 19 dodań i 10 usunięć

Wyświetl plik

@ -636,7 +636,7 @@ public final class GroupSendUtil {
boolean isRecipientUpdate) boolean isRecipientUpdate)
throws NoSessionException, UntrustedIdentityException, InvalidKeyException, IOException, InvalidRegistrationIdException 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 @Override
@ -648,7 +648,7 @@ public final class GroupSendUtil {
@Nullable CancelationSignal cancelationSignal) @Nullable CancelationSignal cancelationSignal)
throws IOException, UntrustedIdentityException throws IOException, UntrustedIdentityException
{ {
return messageSender.sendStory(targets, access, message, getSentTimestamp(), manifest); return messageSender.sendStory(targets, access, isRecipientUpdate, message, getSentTimestamp(), manifest);
} }
@Override @Override

Wyświetl plik

@ -252,6 +252,7 @@ public class SignalServiceMessageSender {
public List<SendMessageResult> sendStory(List<SignalServiceAddress> recipients, public List<SendMessageResult> sendStory(List<SignalServiceAddress> recipients,
List<Optional<UnidentifiedAccessPair>> unidentifiedAccess, List<Optional<UnidentifiedAccessPair>> unidentifiedAccess,
boolean isRecipientUpdate,
SignalServiceStoryMessage message, SignalServiceStoryMessage message,
long timestamp, long timestamp,
Set<SignalServiceStoryMessageRecipient> manifest) Set<SignalServiceStoryMessageRecipient> manifest)
@ -260,21 +261,23 @@ public class SignalServiceMessageSender {
Content content = createStoryContent(message); Content content = createStoryContent(message);
EnvelopeContent envelopeContent = EnvelopeContent.encrypted(content, ContentHint.RESENDABLE, Optional.empty()); EnvelopeContent envelopeContent = EnvelopeContent.encrypted(content, ContentHint.RESENDABLE, Optional.empty());
List<SendMessageResult> sendMessageResults = sendMessage(recipients, getTargetUnidentifiedAccess(unidentifiedAccess), timestamp, envelopeContent, false, null, null); List<SendMessageResult> 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; return sendMessageResults;
} }
/** /**
* Send a typing indicator to a group using sender key. Doesn't bother with return results, since these are best-effort. * Send a story using sender key.
* @return
*/ */
public List<SendMessageResult> sendGroupStory(DistributionId distributionId, public List<SendMessageResult> sendGroupStory(DistributionId distributionId,
Optional<byte[]> groupId, Optional<byte[]> groupId,
List<SignalServiceAddress> recipients, List<SignalServiceAddress> recipients,
List<UnidentifiedAccess> unidentifiedAccess, List<UnidentifiedAccess> unidentifiedAccess,
boolean isRecipientUpdate,
SignalServiceStoryMessage message, SignalServiceStoryMessage message,
long timestamp, long timestamp,
Set<SignalServiceStoryMessageRecipient> manifest) Set<SignalServiceStoryMessageRecipient> manifest)
@ -282,9 +285,11 @@ public class SignalServiceMessageSender {
{ {
Content content = createStoryContent(message); Content content = createStoryContent(message);
List<SendMessageResult> sendMessageResults = sendGroupMessage(distributionId, recipients, unidentifiedAccess, timestamp, content, ContentHint.RESENDABLE, groupId, false, SenderKeyGroupEvents.EMPTY); List<SendMessageResult> 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; return sendMessageResults;
} }
@ -1576,13 +1581,17 @@ public class SignalServiceMessageSender {
return results; return results;
} }
private SignalServiceSyncMessage createSelfSendSyncMessageForStory(SignalServiceStoryMessage message, long sentTimestamp, Set<SignalServiceStoryMessageRecipient> manifest) { private SignalServiceSyncMessage createSelfSendSyncMessageForStory(SignalServiceStoryMessage message,
long sentTimestamp,
boolean isRecipientUpdate,
Set<SignalServiceStoryMessageRecipient> manifest)
{
SentTranscriptMessage transcript = new SentTranscriptMessage(Optional.of(localAddress), SentTranscriptMessage transcript = new SentTranscriptMessage(Optional.of(localAddress),
sentTimestamp, sentTimestamp,
Optional.empty(), Optional.empty(),
0, 0,
Collections.singletonMap(localAddress.getServiceId(), false), Collections.singletonMap(localAddress.getServiceId(), false),
false, isRecipientUpdate,
Optional.of(message), Optional.of(message),
manifest); manifest);