Fix sending group stories when you're the only group member.

fork-5.53.8
Greyson Parrelli 2022-10-06 11:03:32 -04:00
rodzic b78f06f064
commit 14e8f5cf98
2 zmienionych plików z 23 dodań i 1 usunięć

Wyświetl plik

@ -484,6 +484,7 @@ public final class GroupSendUtil {
@Nullable CancelationSignal cancelationSignal)
throws IOException, UntrustedIdentityException
{
// PniSignatures are only needed for 1:1 messages, but some message jobs use the GroupSendUtil methods to send 1:1
if (targets.size() == 1 && relatedMessageId == null) {
Recipient targetRecipient = targetRecipients.get(0);
SendMessageResult result = messageSender.sendDataMessage(targets.get(0), access.get(0), contentHint, message, SignalServiceMessageSender.IndividualSendEvents.EMPTY, urgent, targetRecipient.needsPniSignature());
@ -689,7 +690,14 @@ public final class GroupSendUtil {
@Nullable CancelationSignal cancelationSignal)
throws IOException, UntrustedIdentityException
{
throw new UnsupportedOperationException("Stories can only be send via sender key!");
// We only allow legacy sends if you're sending to an empty group and just need to send a sync message.
if (targets.isEmpty()) {
Log.w(TAG, "Only sending a sync message.");
messageSender.sendStorySyncMessage(message, getSentTimestamp(), isRecipientUpdate, manifest);
return Collections.emptyList();
} else {
throw new UnsupportedOperationException("Stories can only be send via sender key!");
}
}
@Override

Wyświetl plik

@ -268,6 +268,20 @@ public class SignalServiceMessageSender {
sendGroupMessage(distributionId, recipients, unidentifiedAccess, message.getTimestamp(), content, ContentHint.IMPLICIT, message.getGroupId(), true, SenderKeyGroupEvents.EMPTY, false, false);
}
/**
* Only sends sync message for a story. Useful if you're sending to a group with no one else in it -- meaning you don't need to send a story, but you do need
* to send it to your linked devices.
*/
public void sendStorySyncMessage(SignalServiceStoryMessage message,
long timestamp,
boolean isRecipientUpdate,
Set<SignalServiceStoryMessageRecipient> manifest)
throws IOException, UntrustedIdentityException
{
SignalServiceSyncMessage syncMessage = createSelfSendSyncMessageForStory(message, timestamp, isRecipientUpdate, manifest);
sendSyncMessage(syncMessage, Optional.empty());
}
/**
* Send a story using sender key. Note: This is not just for group stories -- it's for any story. Just following the naming convention of making sender key
* method named "sendGroup*"