Fix issue where group sent transcripts were not put in proper processing queue.

This commit is contained in:
Greyson Parrelli 2021-02-09 21:10:12 -05:00 committed by Cody Henthorne
parent 6c2d21125e
commit 2954c31b5f

View file

@ -124,6 +124,7 @@ import org.whispersystems.signalservice.api.messages.multidevice.ViewOnceOpenMes
import org.whispersystems.signalservice.api.messages.shared.SharedContact;
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException;
import org.whispersystems.signalservice.internal.push.SignalServiceProtos;
import java.io.IOException;
import java.security.SecureRandom;
@ -236,10 +237,11 @@ public final class PushProcessMessageJob extends BaseJob {
.setMaxAttempts(Parameters.UNLIMITED);
if (content != null) {
if (content.getDataMessage().isPresent() && content.getDataMessage().get().getGroupContext().isPresent()) {
SignalServiceGroupContext signalServiceGroupContext = getGroupContextIfPresent(content);
if (signalServiceGroupContext != null) {
try {
SignalServiceGroupContext signalServiceGroupContext = content.getDataMessage().get().getGroupContext().get();
GroupId groupId = GroupUtil.idFromGroupContext(signalServiceGroupContext);
GroupId groupId = GroupUtil.idFromGroupContext(signalServiceGroupContext);
queueName = getQueueName(Recipient.externalPossiblyMigratedGroup(context, groupId).getId());
@ -446,6 +448,19 @@ public final class PushProcessMessageJob extends BaseJob {
}
}
private static @Nullable SignalServiceGroupContext getGroupContextIfPresent(@NonNull SignalServiceContent content) {
if (content.getDataMessage().isPresent() && content.getDataMessage().get().getGroupContext().isPresent()) {
return content.getDataMessage().get().getGroupContext().get();
} else if (content.getSyncMessage().isPresent() &&
content.getSyncMessage().get().getSent().isPresent() &&
content.getSyncMessage().get().getSent().get().getMessage().getGroupContext().isPresent())
{
return content.getSyncMessage().get().getSent().get().getMessage().getGroupContext().get();
} else {
return null;
}
}
/**
* Attempts to update the group to the revision mentioned in the message.
* If the local version is at least the revision in the message it will not query the server.