change: finished feature flag should fallback to default value

This commit is contained in:
ganfra 2025-12-22 17:49:41 +01:00
parent 9afdbdc4ab
commit fd43d58351

View file

@ -25,11 +25,15 @@ class DefaultFeatureFlagService(
private val featuresProvider: FeaturesProvider, private val featuresProvider: FeaturesProvider,
) : FeatureFlagService { ) : FeatureFlagService {
override fun isFeatureEnabledFlow(feature: Feature): Flow<Boolean> { override fun isFeatureEnabledFlow(feature: Feature): Flow<Boolean> {
return providers.filter { it.hasFeature(feature) } return if (feature.isFinished) {
flowOf(feature.defaultValue(buildMeta))
} else {
providers.filter { it.hasFeature(feature) }
.maxByOrNull(FeatureFlagProvider::priority) .maxByOrNull(FeatureFlagProvider::priority)
?.isFeatureEnabledFlow(feature) ?.isFeatureEnabledFlow(feature)
?: flowOf(feature.defaultValue(buildMeta)) ?: flowOf(feature.defaultValue(buildMeta))
} }
}
override suspend fun setFeatureEnabled(feature: Feature, enabled: Boolean): Boolean { override suspend fun setFeatureEnabled(feature: Feature, enabled: Boolean): Boolean {
return providers.filterIsInstance<MutableFeatureFlagProvider>() return providers.filterIsInstance<MutableFeatureFlagProvider>()