From 2954c31b5f33e16855573ba63e6e9654606ac9b4 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 9 Feb 2021 21:10:12 -0500 Subject: [PATCH] Fix issue where group sent transcripts were not put in proper processing queue. --- .../securesms/jobs/PushProcessMessageJob.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java index 30d0561c0..81b70e0d3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java @@ -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.