mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-26 07:07:33 +00:00
Fix issue where FeatureFlags were triggering listeners for non-changes.
This commit is contained in:
@@ -22,6 +22,7 @@ import java.util.HashMap;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@@ -388,7 +389,7 @@ public final class FeatureFlags {
|
|||||||
changes.put(key, Change.REMOVED);
|
changes.put(key, Change.REMOVED);
|
||||||
} else if (newValue != oldValue && newValue instanceof Boolean) {
|
} else if (newValue != oldValue && newValue instanceof Boolean) {
|
||||||
changes.put(key, (boolean) newValue ? Change.ENABLED : Change.DISABLED);
|
changes.put(key, (boolean) newValue ? Change.ENABLED : Change.DISABLED);
|
||||||
} else if (newValue != oldValue) {
|
} else if (!Objects.equals(oldValue, newValue)) {
|
||||||
changes.put(key, Change.CHANGED);
|
changes.put(key, Change.CHANGED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -390,6 +390,8 @@ public class FeatureFlagsTest extends BaseUnitTest {
|
|||||||
put("d", false);
|
put("d", false);
|
||||||
put("g", 5);
|
put("g", 5);
|
||||||
put("h", 5);
|
put("h", 5);
|
||||||
|
put("i", new String("parker")); // Need to use new String to avoid interning string constants
|
||||||
|
put("j", "gwen");
|
||||||
}};
|
}};
|
||||||
|
|
||||||
Map<String, Object> newMap = new HashMap<String, Object>() {{
|
Map<String, Object> newMap = new HashMap<String, Object>() {{
|
||||||
@@ -399,6 +401,8 @@ public class FeatureFlagsTest extends BaseUnitTest {
|
|||||||
put("e", true);
|
put("e", true);
|
||||||
put("f", false);
|
put("f", false);
|
||||||
put("h", 7);
|
put("h", 7);
|
||||||
|
put("i", new String("parker")); // Need to use new String to avoid interning string constants
|
||||||
|
put("j", "stacy");
|
||||||
}};
|
}};
|
||||||
|
|
||||||
Map<String, Change> changes = FeatureFlags.computeChanges(oldMap, newMap);
|
Map<String, Change> changes = FeatureFlags.computeChanges(oldMap, newMap);
|
||||||
@@ -410,6 +414,8 @@ public class FeatureFlagsTest extends BaseUnitTest {
|
|||||||
assertEquals(Change.ENABLED, changes.get("e"));
|
assertEquals(Change.ENABLED, changes.get("e"));
|
||||||
assertEquals(Change.DISABLED, changes.get("f"));
|
assertEquals(Change.DISABLED, changes.get("f"));
|
||||||
assertEquals(Change.CHANGED, changes.get("h"));
|
assertEquals(Change.CHANGED, changes.get("h"));
|
||||||
|
assertFalse(changes.containsKey("i"));
|
||||||
|
assertEquals(Change.CHANGED, changes.get("j"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <V> Set<V> setOf(V... values) {
|
private static <V> Set<V> setOf(V... values) {
|
||||||
|
Reference in New Issue
Block a user