From 51d47adf57f6b81fa351a045b44a11345eab7fa0 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 16 Nov 2020 11:27:58 -0500 Subject: [PATCH] Fix issue where FeatureFlags were triggering listeners for non-changes. --- .../java/org/thoughtcrime/securesms/util/FeatureFlags.java | 3 ++- .../org/thoughtcrime/securesms/util/FeatureFlagsTest.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 c52ec04c429..8885d7a7181 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java @@ -22,6 +22,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.TreeMap; import java.util.concurrent.TimeUnit; @@ -388,7 +389,7 @@ public static boolean groupsV1ForcedMigration() { changes.put(key, Change.REMOVED); } else if (newValue != oldValue && newValue instanceof Boolean) { changes.put(key, (boolean) newValue ? Change.ENABLED : Change.DISABLED); - } else if (newValue != oldValue) { + } else if (!Objects.equals(oldValue, newValue)) { changes.put(key, Change.CHANGED); } } diff --git a/app/src/test/java/org/thoughtcrime/securesms/util/FeatureFlagsTest.java b/app/src/test/java/org/thoughtcrime/securesms/util/FeatureFlagsTest.java index 4ebbb55abe6..78c3d92650a 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/util/FeatureFlagsTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/util/FeatureFlagsTest.java @@ -390,6 +390,8 @@ public void computeChanges_generic() { put("d", false); put("g", 5); put("h", 5); + put("i", new String("parker")); // Need to use new String to avoid interning string constants + put("j", "gwen"); }}; Map newMap = new HashMap() {{ @@ -399,6 +401,8 @@ public void computeChanges_generic() { put("e", true); put("f", false); put("h", 7); + put("i", new String("parker")); // Need to use new String to avoid interning string constants + put("j", "stacy"); }}; Map changes = FeatureFlags.computeChanges(oldMap, newMap); @@ -410,6 +414,8 @@ public void computeChanges_generic() { assertEquals(Change.ENABLED, changes.get("e")); assertEquals(Change.DISABLED, changes.get("f")); assertEquals(Change.CHANGED, changes.get("h")); + assertFalse(changes.containsKey("i")); + assertEquals(Change.CHANGED, changes.get("j")); } private static Set setOf(V... values) {