|
1 | 1 | package net.thunderbird.core.featureflag |
2 | 2 |
|
3 | | -import kotlinx.coroutines.flow.MutableStateFlow |
4 | 3 | import kotlinx.coroutines.flow.StateFlow |
5 | | -import kotlinx.coroutines.flow.asStateFlow |
6 | | -import kotlinx.coroutines.flow.update |
7 | 4 |
|
8 | 5 | /** |
9 | 6 | * Defines a contract for managing local overrides of feature flags. |
@@ -64,37 +61,3 @@ interface FeatureFlagOverrides { |
64 | 61 | */ |
65 | 62 | fun clearAll() |
66 | 63 | } |
67 | | - |
68 | | -fun FeatureFlagOverrides( |
69 | | - initialOverrides: Map<FeatureFlagKey, Boolean> = emptyMap(), |
70 | | -): FeatureFlagOverrides = object : FeatureFlagOverrides { |
71 | | - private val _overrides = MutableStateFlow(initialOverrides) |
72 | | - override val overrides: StateFlow<Map<FeatureFlagKey, Boolean>> = _overrides.asStateFlow() |
73 | | - |
74 | | - override fun get(key: FeatureFlagKey): Boolean? = overrides.value[key] |
75 | | - |
76 | | - override fun set(key: FeatureFlagKey, value: Boolean) { |
77 | | - _overrides.update { it + (key to value) } |
78 | | - } |
79 | | - |
80 | | - override fun clear(key: FeatureFlagKey) { |
81 | | - _overrides.update { it - key } |
82 | | - } |
83 | | - |
84 | | - override fun clearAll() { |
85 | | - _overrides.update { emptyMap() } |
86 | | - } |
87 | | -} |
88 | | - |
89 | | -object NoOpFeatureFlagOverrides : FeatureFlagOverrides { |
90 | | - override val overrides: StateFlow<Map<FeatureFlagKey, Boolean>> = |
91 | | - MutableStateFlow(emptyMap<FeatureFlagKey, Boolean>()).asStateFlow() |
92 | | - |
93 | | - override fun get(key: FeatureFlagKey): Boolean? = false |
94 | | - |
95 | | - override fun set(key: FeatureFlagKey, value: Boolean) = Unit |
96 | | - |
97 | | - override fun clear(key: FeatureFlagKey) = Unit |
98 | | - |
99 | | - override fun clearAll() = Unit |
100 | | -} |
0 commit comments