diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/BadGroupIdException.java b/app/src/main/java/org/thoughtcrime/securesms/groups/BadGroupIdException.java index 1f419a16e8..71495bf71c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/BadGroupIdException.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/BadGroupIdException.java @@ -4,7 +4,7 @@ import androidx.annotation.NonNull; public final class BadGroupIdException extends Exception { - BadGroupIdException() { + public BadGroupIdException() { super(); } 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 9a93755a6e..2820266747 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java @@ -92,7 +92,6 @@ import org.thoughtcrime.securesms.util.RemoteDeleteUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.libsignal.state.SessionStore; import org.whispersystems.libsignal.util.guava.Optional; -import org.whispersystems.libsignal.util.guava.Preconditions; import org.whispersystems.signalservice.api.groupsv2.InvalidGroupStateException; import org.whispersystems.signalservice.api.groupsv2.NoCredentialForRedemptionTimeException; import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; @@ -413,7 +412,11 @@ public final class PushProcessMessageJob extends BaseJob { Log.w(TAG, e); handleCorruptMessage(e.getSender(), e.getSenderDevice(), timestamp, smsMessageId); } catch (BadGroupIdException e) { - Log.w(TAG, "Ignoring message with bad group id", e); + if (!FeatureFlags.ZK_GROUPS) { + Log.w(TAG, "Ignoring message with GV2 - no ZK_GROUP library", e); + } else { + Log.w(TAG, "Ignoring message with bad group id", e); + } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupV2InfoJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupV2InfoJob.java index ac2a995b3f..ad1f0c14e9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupV2InfoJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupV2InfoJob.java @@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.logging.Log; +import org.thoughtcrime.securesms.util.FeatureFlags; import org.whispersystems.libsignal.util.guava.Optional; import org.whispersystems.signalservice.api.groupsv2.NoCredentialForRedemptionTimeException; import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException; @@ -72,6 +73,11 @@ public final class RequestGroupV2InfoJob extends BaseJob { @Override public void onRun() throws IOException, GroupNotAMemberException, GroupChangeBusyException { + if (!FeatureFlags.groupsV2()) { + Log.w(TAG, "Group update skipped due to feature flag " + groupId); + return; + } + Log.i(TAG, "Updating group to revision " + toRevision); Optional group = DatabaseFactory.getGroupDatabase(context).getGroup(groupId); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java index e8152733cb..65fef9e60d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java @@ -507,4 +507,7 @@ public final class FeatureFlags { /** Read and write versioned profile information. */ public static final boolean VERSIONED_PROFILES = org.whispersystems.signalservice.FeatureFlags.VERSIONED_PROFILES; + + /** Enabled ZKGroups library. */ + public static final boolean ZK_GROUPS = org.whispersystems.signalservice.FeatureFlags.ZK_GROUPS; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/GroupUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/GroupUtil.java index 27b86a52be..e2ce8ca034 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/GroupUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/GroupUtil.java @@ -41,6 +41,9 @@ public final class GroupUtil { if (groupContext.getGroupV1().isPresent()) { return GroupId.v1(groupContext.getGroupV1().get().getGroupId()); } else if (groupContext.getGroupV2().isPresent()) { + if (!FeatureFlags.ZK_GROUPS) { + throw new BadGroupIdException(); + } return GroupId.v2(groupContext.getGroupV2().get().getMasterKey()); } else { throw new AssertionError();