From 952ca1a1437012fc0dbaf4a0464605d6e84256f1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 7 Sep 2023 12:32:21 +0200 Subject: [PATCH] Make a diff between `FeatureFlags.defaultValue` and value returned by `StaticFeatureFlagProvider.isFeatureEnabled()`. Iterate after Ganfra's review. --- .../android/libraries/featureflag/api/FeatureFlags.kt | 4 +++- .../featureflag/impl/StaticFeatureFlagProvider.kt | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index 36113389a4..fc13a8a1cc 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -18,7 +18,8 @@ package io.element.android.libraries.featureflag.api /** * To enable or disable a FeatureFlags, change the `defaultValue` value. - * It will impact all the build types. + * Warning: to enable a flog for the release app, you MUST update the file + * [io.element.android.libraries.featureflag.impl.StaticFeatureFlagProvider] */ enum class FeatureFlags( override val key: String, @@ -40,6 +41,7 @@ enum class FeatureFlags( NotificationSettings( key = "feature.notificationsettings", title = "Show notification settings", + // Do not forget to edit StaticFeatureFlagProvider when enabling the feature. defaultValue = false, ), } diff --git a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt index 50a1ac4dd5..50efdb9fc3 100644 --- a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt +++ b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt @@ -22,7 +22,7 @@ import javax.inject.Inject /** * This provider is used for release build. - * [isFeatureEnabled] just returns the default value of the FeatureFlags. + * This is the place to enable or disable feature for the release build. */ class StaticFeatureFlagProvider @Inject constructor() : FeatureFlagProvider { @@ -31,7 +31,11 @@ class StaticFeatureFlagProvider @Inject constructor() : override suspend fun isFeatureEnabled(feature: Feature): Boolean { return if (feature is FeatureFlags) { - feature.defaultValue + when(feature) { + FeatureFlags.LocationSharing -> true + FeatureFlags.Polls -> true + FeatureFlags.NotificationSettings -> false + } } else { false }