Improve FeatureFlagService API.
This commit is contained in:
committed by
Benoit Marty
parent
6854f014b0
commit
b7ac322d18
@@ -90,7 +90,6 @@ class DeveloperSettingsPresenter(
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
featureFlagService.getAvailableFeatures()
|
||||
.filter { it.isInLabs.not() && it.isFinished.not() }
|
||||
.run {
|
||||
// Never display room directory search in release builds for Play Store
|
||||
if (buildMeta.flavorDescription == "GooglePlay" && buildMeta.buildType == BuildType.RELEASE) {
|
||||
|
||||
@@ -43,8 +43,7 @@ class LabsPresenter(
|
||||
override fun present(): LabsState {
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
val features = remember {
|
||||
val entries = featureFlagService.getAvailableFeatures()
|
||||
.filter { it.isInLabs && !it.isFinished }
|
||||
val entries = featureFlagService.getAvailableFeatures(isInLabs = true)
|
||||
.map { it.key to it }
|
||||
mutableStateMapOf(*entries.toTypedArray())
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ class PreferencesRootPresenter(
|
||||
.launchIn(this)
|
||||
}
|
||||
|
||||
val showLabsItem = remember { featureFlagService.getAvailableFeatures().any { it.isInLabs && !it.isFinished } }
|
||||
val showLabsItem = remember { featureFlagService.getAvailableFeatures(isInLabs = true).isNotEmpty() }
|
||||
|
||||
val directLogoutState = directLogoutPresenter.present()
|
||||
|
||||
|
||||
@@ -35,7 +35,12 @@ interface FeatureFlagService {
|
||||
suspend fun setFeatureEnabled(feature: Feature, enabled: Boolean): Boolean
|
||||
|
||||
/**
|
||||
* @return the list of available (not finished) features that can be toggled.
|
||||
* @return the list of available features that can be toggled.
|
||||
* @param includeFinishFeatures whether to include finished features, default is false
|
||||
* @param isInLabs whether the user is in labs (to include lab features), default is false
|
||||
*/
|
||||
fun getAvailableFeatures(): List<Feature>
|
||||
fun getAvailableFeatures(
|
||||
includeFinishFeatures: Boolean = false,
|
||||
isInLabs: Boolean = false,
|
||||
): List<Feature>
|
||||
}
|
||||
|
||||
@@ -40,7 +40,13 @@ class DefaultFeatureFlagService(
|
||||
?: false
|
||||
}
|
||||
|
||||
override fun getAvailableFeatures(): List<Feature> {
|
||||
return FeatureFlags.entries.filter { !it.isFinished }
|
||||
override fun getAvailableFeatures(
|
||||
includeFinishFeatures: Boolean,
|
||||
isInLabs: Boolean,
|
||||
): List<Feature> {
|
||||
return FeatureFlags.entries.filter { flag ->
|
||||
(includeFinishFeatures || !flag.isFinished) &&
|
||||
flag.isInLabs == isInLabs
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,10 @@ class FakeFeatureFlagService(
|
||||
return enabledFeatures.getOrPut(feature.key) { MutableStateFlow(feature.defaultValue(buildMeta)) }
|
||||
}
|
||||
|
||||
override fun getAvailableFeatures(): List<Feature> {
|
||||
override fun getAvailableFeatures(
|
||||
includeFinishFeatures: Boolean,
|
||||
isInLabs: Boolean,
|
||||
): List<Feature> {
|
||||
return providedAvailableFeatures
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user