Improve FeatureFlagService API.
This commit is contained in:
parent
d2dfad7726
commit
de2a4bc8c6
6 changed files with 21 additions and 9 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue