mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
Improve FeatureFlagService API.
This commit is contained in:
committed by
Benoit Marty
parent
d2dfad7726
commit
de2a4bc8c6
-1
@@ -90,7 +90,6 @@ class DeveloperSettingsPresenter(
|
|||||||
|
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
featureFlagService.getAvailableFeatures()
|
featureFlagService.getAvailableFeatures()
|
||||||
.filter { it.isInLabs.not() && it.isFinished.not() }
|
|
||||||
.run {
|
.run {
|
||||||
// Never display room directory search in release builds for Play Store
|
// Never display room directory search in release builds for Play Store
|
||||||
if (buildMeta.flavorDescription == "GooglePlay" && buildMeta.buildType == BuildType.RELEASE) {
|
if (buildMeta.flavorDescription == "GooglePlay" && buildMeta.buildType == BuildType.RELEASE) {
|
||||||
|
|||||||
+1
-2
@@ -43,8 +43,7 @@ class LabsPresenter(
|
|||||||
override fun present(): LabsState {
|
override fun present(): LabsState {
|
||||||
val coroutineScope = rememberCoroutineScope()
|
val coroutineScope = rememberCoroutineScope()
|
||||||
val features = remember {
|
val features = remember {
|
||||||
val entries = featureFlagService.getAvailableFeatures()
|
val entries = featureFlagService.getAvailableFeatures(isInLabs = true)
|
||||||
.filter { it.isInLabs && !it.isFinished }
|
|
||||||
.map { it.key to it }
|
.map { it.key to it }
|
||||||
mutableStateMapOf(*entries.toTypedArray())
|
mutableStateMapOf(*entries.toTypedArray())
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -112,7 +112,7 @@ class PreferencesRootPresenter(
|
|||||||
.launchIn(this)
|
.launchIn(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
val showLabsItem = remember { featureFlagService.getAvailableFeatures().any { it.isInLabs && !it.isFinished } }
|
val showLabsItem = remember { featureFlagService.getAvailableFeatures(isInLabs = true).isNotEmpty() }
|
||||||
|
|
||||||
val directLogoutState = directLogoutPresenter.present()
|
val directLogoutState = directLogoutPresenter.present()
|
||||||
|
|
||||||
|
|||||||
+7
-2
@@ -35,7 +35,12 @@ interface FeatureFlagService {
|
|||||||
suspend fun setFeatureEnabled(feature: Feature, enabled: Boolean): Boolean
|
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>
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-2
@@ -40,7 +40,13 @@ class DefaultFeatureFlagService(
|
|||||||
?: false
|
?: false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getAvailableFeatures(): List<Feature> {
|
override fun getAvailableFeatures(
|
||||||
return FeatureFlags.entries.filter { !it.isFinished }
|
includeFinishFeatures: Boolean,
|
||||||
|
isInLabs: Boolean,
|
||||||
|
): List<Feature> {
|
||||||
|
return FeatureFlags.entries.filter { flag ->
|
||||||
|
(includeFinishFeatures || !flag.isFinished) &&
|
||||||
|
flag.isInLabs == isInLabs
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-1
@@ -33,7 +33,10 @@ class FakeFeatureFlagService(
|
|||||||
return enabledFeatures.getOrPut(feature.key) { MutableStateFlow(feature.defaultValue(buildMeta)) }
|
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
|
return providedAvailableFeatures
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user