From 28511de23c6c639302a5939d058cfd7c3edba7c4 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 20 Nov 2020 11:39:55 -0500 Subject: [PATCH] Ensure we properly detect update messages for migrations. --- .../securesms/jobs/PushProcessMessageJob.java | 9 +++++++++ .../api/messages/SignalServiceDataMessage.java | 4 ++++ 2 files changed, 13 insertions(+) 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 d1ea212206..ef64e15d65 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java @@ -953,6 +953,13 @@ public final class PushProcessMessageJob extends BaseJob { try { GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context); + if (message.getMessage().isGroupV2Message()) { + Optional possibleGv1 = groupDatabase.getGroupV1ByExpectedV2(GroupId.v2(message.getMessage().getGroupContext().get().getGroupV2().get().getMasterKey())); + if (possibleGv1.isPresent()) { + GroupsV1MigrationUtil.performLocalMigration(context, possibleGv1.get().getId().requireV1()); + } + } + long threadId = -1; if (message.isRecipientUpdate()) { @@ -965,6 +972,8 @@ public final class PushProcessMessageJob extends BaseJob { } else if (message.getMessage().isGroupV2Update()) { handleSynchronizeSentGv2Update(content, message); threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(getSyncMessageDestination(message)); + } else if (message.getMessage().isEmptyGroupV2Message()) { + // Do nothing } else if (message.getMessage().isExpirationUpdate()) { threadId = handleSynchronizeSentExpirationUpdate(message); } else if (message.getMessage().getReaction().isPresent()) { diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceDataMessage.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceDataMessage.java index 50a2961a8b..93df5e0330 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceDataMessage.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceDataMessage.java @@ -163,6 +163,10 @@ public class SignalServiceDataMessage { !hasRenderableContent(); } + public boolean isEmptyGroupV2Message() { + return isGroupV2Message() && !isGroupV2Update() && !hasRenderableContent(); + } + /** Contains some user data that affects the conversation */ public boolean hasRenderableContent() { return attachments.isPresent() ||