kopia lustrzana https://github.com/ryukoposting/Signal-Android
Remove feature flags that are no longer remote capable.
rodzic
8e795c4177
commit
6813f47bc1
|
@ -149,7 +149,7 @@ public final class FeatureFlags {
|
||||||
SignalStore.remoteConfigValues().setPendingConfig(mapToJson(result.getDisk()));
|
SignalStore.remoteConfigValues().setPendingConfig(mapToJson(result.getDisk()));
|
||||||
REMOTE_VALUES.clear();
|
REMOTE_VALUES.clear();
|
||||||
REMOTE_VALUES.putAll(result.getMemory());
|
REMOTE_VALUES.putAll(result.getMemory());
|
||||||
triggerFlagChangeListeners(result.getChanges());
|
triggerFlagChangeListeners(result.getMemoryChanges());
|
||||||
|
|
||||||
SignalStore.remoteConfigValues().setLastFetchTime(System.currentTimeMillis());
|
SignalStore.remoteConfigValues().setLastFetchTime(System.currentTimeMillis());
|
||||||
|
|
||||||
|
@ -271,6 +271,17 @@ public final class FeatureFlags {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Stream.of(allKeys)
|
||||||
|
.filterNot(remoteCapable::contains)
|
||||||
|
.filterNot(key -> sticky.contains(key) && localDisk.get(key) == Boolean.TRUE)
|
||||||
|
.forEach(key -> {
|
||||||
|
newDisk.remove(key);
|
||||||
|
|
||||||
|
if (hotSwap.contains(key)) {
|
||||||
|
newMemory.remove(key);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return new UpdateResult(newMemory, newDisk, computeChanges(localMemory, newMemory));
|
return new UpdateResult(newMemory, newDisk, computeChanges(localMemory, newMemory));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,12 +378,12 @@ public final class FeatureFlags {
|
||||||
static final class UpdateResult {
|
static final class UpdateResult {
|
||||||
private final Map<String, Boolean> memory;
|
private final Map<String, Boolean> memory;
|
||||||
private final Map<String, Boolean> disk;
|
private final Map<String, Boolean> disk;
|
||||||
private final Map<String, Change> changes;
|
private final Map<String, Change> memoryChanges;
|
||||||
|
|
||||||
UpdateResult(@NonNull Map<String, Boolean> memory, @NonNull Map<String, Boolean> disk, @NonNull Map<String, Change> changes) {
|
UpdateResult(@NonNull Map<String, Boolean> memory, @NonNull Map<String, Boolean> disk, @NonNull Map<String, Change> memoryChanges) {
|
||||||
this.memory = memory;
|
this.memory = memory;
|
||||||
this.disk = disk;
|
this.disk = disk;
|
||||||
this.changes = changes;
|
this.memoryChanges = memoryChanges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Map<String, Boolean> getMemory() {
|
public @NonNull Map<String, Boolean> getMemory() {
|
||||||
|
@ -383,8 +394,8 @@ public final class FeatureFlags {
|
||||||
return disk;
|
return disk;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Map<String, Change> getChanges() {
|
public @NonNull Map<String, Change> getMemoryChanges() {
|
||||||
return changes;
|
return memoryChanges;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(), result.getMemory());
|
assertEquals(mapOf(), result.getMemory());
|
||||||
assertEquals(mapOf("A", true), result.getDisk());
|
assertEquals(mapOf("A", true), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -45,7 +45,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(), result.getMemory());
|
assertEquals(mapOf(), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -59,7 +59,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, true), result.getMemory());
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertEquals(Change.ENABLED, result.getChanges().get(A));
|
assertEquals(Change.ENABLED, result.getMemoryChanges().get(A));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -73,7 +73,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(), result.getMemory());
|
assertEquals(mapOf(), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -87,7 +87,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, true), result.getMemory());
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertEquals(Change.ENABLED, result.getChanges().get(A));
|
assertEquals(Change.ENABLED, result.getMemoryChanges().get(A));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -101,7 +101,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, false), result.getMemory());
|
assertEquals(mapOf(A, false), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -115,7 +115,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, true), result.getMemory());
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertEquals(Change.ENABLED, result.getChanges().get(A));
|
assertEquals(Change.ENABLED, result.getMemoryChanges().get(A));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -129,7 +129,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, true), result.getMemory());
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertEquals(Change.ENABLED, result.getChanges().get(A));
|
assertEquals(Change.ENABLED, result.getMemoryChanges().get(A));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -143,7 +143,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, true), result.getMemory());
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -157,7 +157,21 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, true), result.getMemory());
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
assertEquals(mapOf(), result.getDisk());
|
assertEquals(mapOf(), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateInternal_removeValue_notRemoteCapable() {
|
||||||
|
UpdateResult result = FeatureFlags.updateInternal(mapOf(A, true),
|
||||||
|
mapOf(A, true),
|
||||||
|
mapOf(A, true),
|
||||||
|
setOf(),
|
||||||
|
setOf(),
|
||||||
|
setOf());
|
||||||
|
|
||||||
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
|
assertEquals(mapOf(), result.getDisk());
|
||||||
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -171,7 +185,21 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(), result.getMemory());
|
assertEquals(mapOf(), result.getMemory());
|
||||||
assertEquals(mapOf(), result.getDisk());
|
assertEquals(mapOf(), result.getDisk());
|
||||||
assertEquals(Change.REMOVED, result.getChanges().get(A));
|
assertEquals(Change.REMOVED, result.getMemoryChanges().get(A));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateInternal_removeValue_hotSwap_notRemoteCapable() {
|
||||||
|
UpdateResult result = FeatureFlags.updateInternal(mapOf(A, true),
|
||||||
|
mapOf(A, true),
|
||||||
|
mapOf(A, true),
|
||||||
|
setOf(),
|
||||||
|
setOf(A),
|
||||||
|
setOf());
|
||||||
|
|
||||||
|
assertEquals(mapOf(), result.getMemory());
|
||||||
|
assertEquals(mapOf(), result.getDisk());
|
||||||
|
assertEquals(Change.REMOVED, result.getMemoryChanges().get(A));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -185,7 +213,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, true), result.getMemory());
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -199,7 +227,21 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, false), result.getMemory());
|
assertEquals(mapOf(A, false), result.getMemory());
|
||||||
assertEquals(mapOf(), result.getDisk());
|
assertEquals(mapOf(), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateInternal_removeValue_stickyNotEnabled_notRemoteCapable() {
|
||||||
|
UpdateResult result = FeatureFlags.updateInternal(mapOf(A, true),
|
||||||
|
mapOf(A, false),
|
||||||
|
mapOf(A, false),
|
||||||
|
setOf(),
|
||||||
|
setOf(),
|
||||||
|
setOf(A));
|
||||||
|
|
||||||
|
assertEquals(mapOf(A, false), result.getMemory());
|
||||||
|
assertEquals(mapOf(), result.getDisk());
|
||||||
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -213,7 +255,21 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, true), result.getMemory());
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
assertEquals(mapOf(A, true), result.getDisk());
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateInternal_removeValue_hotSwap_stickyAlreadyEnabled_notRemoteCapable() {
|
||||||
|
UpdateResult result = FeatureFlags.updateInternal(mapOf(A, true),
|
||||||
|
mapOf(A, true),
|
||||||
|
mapOf(A, true),
|
||||||
|
setOf(),
|
||||||
|
setOf(A),
|
||||||
|
setOf(A));
|
||||||
|
|
||||||
|
assertEquals(mapOf(A, true), result.getMemory());
|
||||||
|
assertEquals(mapOf(A, true), result.getDisk());
|
||||||
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -227,7 +283,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(), result.getMemory());
|
assertEquals(mapOf(), result.getMemory());
|
||||||
assertEquals(mapOf(), result.getDisk());
|
assertEquals(mapOf(), result.getDisk());
|
||||||
assertEquals(Change.REMOVED, result.getChanges().get(A));
|
assertEquals(Change.REMOVED, result.getMemoryChanges().get(A));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -242,7 +298,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(), result.getMemory());
|
assertEquals(mapOf(), result.getMemory());
|
||||||
assertEquals(mapOf(A, true, B, false), result.getDisk());
|
assertEquals(mapOf(A, true, B, false), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -259,7 +315,7 @@ public class FeatureFlagsTest {
|
||||||
|
|
||||||
assertEquals(mapOf(A, true, B, true), result.getMemory());
|
assertEquals(mapOf(A, true, B, true), result.getMemory());
|
||||||
assertEquals(mapOf(A, true, B, false), result.getDisk());
|
assertEquals(mapOf(A, true, B, false), result.getDisk());
|
||||||
assertTrue(result.getChanges().isEmpty());
|
assertTrue(result.getMemoryChanges().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Ładowanie…
Reference in New Issue