Skip to content

Commit 90f6073

Browse files
authored
Merge pull request #10233 from wmontwe/fix-10230-missing-beta-feature-flag-overrides
fix: add missing beta NoOpFeatureFlagOverrides
2 parents 4f082b4 + fed6c8d commit 90f6073

File tree

9 files changed

+58
-42
lines changed

9 files changed

+58
-42
lines changed

app-k9mail/src/debug/kotlin/app/k9mail/dev/DebugConfig.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package app.k9mail.dev
33
import app.k9mail.autodiscovery.api.AutoDiscovery
44
import app.k9mail.autodiscovery.demo.DemoAutoDiscovery
55
import com.fsck.k9.backend.BackendFactory
6+
import net.thunderbird.core.featureflag.DefaultFeatureFlagOverrides
67
import net.thunderbird.core.featureflag.FeatureFlagOverrides
78
import org.koin.core.module.Module
89
import org.koin.core.qualifier.named
@@ -15,5 +16,5 @@ fun Module.developmentModuleAdditions() {
1516
single<List<AutoDiscovery>>(named("extraAutoDiscoveries")) {
1617
listOf(DemoAutoDiscovery())
1718
}
18-
single<FeatureFlagOverrides> { FeatureFlagOverrides() }
19+
single<FeatureFlagOverrides> { DefaultFeatureFlagOverrides() }
1920
}

app-k9mail/src/release/kotlin/app/k9mail/dev/ReleaseConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ fun Module.developmentModuleAdditions() {
1414
single<List<AutoDiscovery>>(named("extraAutoDiscoveries")) {
1515
emptyList()
1616
}
17-
single<FeatureFlagOverrides> { NoOpFeatureFlagOverrides }
17+
single<FeatureFlagOverrides> { NoOpFeatureFlagOverrides() }
1818
}

app-thunderbird/src/beta/kotlin/net/thunderbird/android/dev/BetaConfig.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package net.thunderbird.android.dev
22

33
import app.k9mail.autodiscovery.api.AutoDiscovery
44
import com.fsck.k9.backend.BackendFactory
5+
import net.thunderbird.core.featureflag.FeatureFlagOverrides
6+
import net.thunderbird.core.featureflag.NoOpFeatureFlagOverrides
57
import org.koin.core.module.Module
68
import org.koin.core.qualifier.named
79

@@ -12,4 +14,6 @@ fun Module.developmentModuleAdditions() {
1214
single<List<AutoDiscovery>>(named("extraAutoDiscoveries")) {
1315
emptyList()
1416
}
17+
18+
single<FeatureFlagOverrides> { NoOpFeatureFlagOverrides() }
1519
}

app-thunderbird/src/daily/kotlin/net/thunderbird/android/dev/DailyConfig.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package net.thunderbird.android.dev
33
import app.k9mail.autodiscovery.api.AutoDiscovery
44
import app.k9mail.autodiscovery.demo.DemoAutoDiscovery
55
import com.fsck.k9.backend.BackendFactory
6+
import net.thunderbird.core.featureflag.DefaultFeatureFlagOverrides
67
import net.thunderbird.core.featureflag.FeatureFlagOverrides
78
import org.koin.core.module.Module
89
import org.koin.core.qualifier.named
@@ -15,5 +16,5 @@ fun Module.developmentModuleAdditions() {
1516
single<List<AutoDiscovery>>(named("extraAutoDiscoveries")) {
1617
listOf(DemoAutoDiscovery())
1718
}
18-
single<FeatureFlagOverrides> { FeatureFlagOverrides() }
19+
single<FeatureFlagOverrides> { DefaultFeatureFlagOverrides() }
1920
}

app-thunderbird/src/debug/kotlin/net/thunderbird/android/dev/DebugConfig.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package net.thunderbird.android.dev
33
import app.k9mail.autodiscovery.api.AutoDiscovery
44
import app.k9mail.autodiscovery.demo.DemoAutoDiscovery
55
import com.fsck.k9.backend.BackendFactory
6+
import net.thunderbird.core.featureflag.DefaultFeatureFlagOverrides
67
import net.thunderbird.core.featureflag.FeatureFlagOverrides
78
import org.koin.core.module.Module
89
import org.koin.core.qualifier.named
@@ -15,5 +16,5 @@ fun Module.developmentModuleAdditions() {
1516
single<List<AutoDiscovery>>(named("extraAutoDiscoveries")) {
1617
listOf(DemoAutoDiscovery())
1718
}
18-
single<FeatureFlagOverrides> { FeatureFlagOverrides() }
19+
single<FeatureFlagOverrides> { DefaultFeatureFlagOverrides() }
1920
}

app-thunderbird/src/release/kotlin/net/thunderbird/android/dev/ReleaseConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ fun Module.developmentModuleAdditions() {
1414
single<List<AutoDiscovery>>(named("extraAutoDiscoveries")) {
1515
emptyList()
1616
}
17-
single<FeatureFlagOverrides> { NoOpFeatureFlagOverrides }
17+
single<FeatureFlagOverrides> { NoOpFeatureFlagOverrides() }
1818
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.thunderbird.core.featureflag
2+
3+
import kotlin.collections.plus
4+
import kotlinx.coroutines.flow.MutableStateFlow
5+
import kotlinx.coroutines.flow.StateFlow
6+
import kotlinx.coroutines.flow.asStateFlow
7+
import kotlinx.coroutines.flow.update
8+
9+
class DefaultFeatureFlagOverrides(
10+
initialOverrides: Map<FeatureFlagKey, Boolean> = emptyMap(),
11+
) : FeatureFlagOverrides {
12+
private val _overrides = MutableStateFlow(initialOverrides)
13+
override val overrides: StateFlow<Map<FeatureFlagKey, Boolean>> = _overrides.asStateFlow()
14+
15+
override fun get(key: FeatureFlagKey): Boolean? = overrides.value[key]
16+
17+
override fun set(key: FeatureFlagKey, value: Boolean) {
18+
_overrides.update { it + (key to value) }
19+
}
20+
21+
override fun clear(key: FeatureFlagKey) {
22+
_overrides.update { it - key }
23+
}
24+
25+
override fun clearAll() {
26+
_overrides.update { emptyMap() }
27+
}
28+
}

core/featureflag/src/commonMain/kotlin/net/thunderbird/core/featureflag/FeatureFlagOverrides.kt

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package net.thunderbird.core.featureflag
22

3-
import kotlinx.coroutines.flow.MutableStateFlow
43
import kotlinx.coroutines.flow.StateFlow
5-
import kotlinx.coroutines.flow.asStateFlow
6-
import kotlinx.coroutines.flow.update
74

85
/**
96
* Defines a contract for managing local overrides of feature flags.
@@ -64,37 +61,3 @@ interface FeatureFlagOverrides {
6461
*/
6562
fun clearAll()
6663
}
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-
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package net.thunderbird.core.featureflag
2+
3+
import kotlinx.coroutines.flow.MutableStateFlow
4+
import kotlinx.coroutines.flow.StateFlow
5+
import kotlinx.coroutines.flow.asStateFlow
6+
7+
class NoOpFeatureFlagOverrides : FeatureFlagOverrides {
8+
override val overrides: StateFlow<Map<FeatureFlagKey, Boolean>> =
9+
MutableStateFlow(emptyMap<FeatureFlagKey, Boolean>()).asStateFlow()
10+
11+
override fun get(key: FeatureFlagKey): Boolean? = false
12+
13+
override fun set(key: FeatureFlagKey, value: Boolean) = Unit
14+
15+
override fun clear(key: FeatureFlagKey) = Unit
16+
17+
override fun clearAll() = Unit
18+
}

0 commit comments

Comments
 (0)