Browse Source

Feature: add a `isFinished` boolean to filter out features from developer options screen.

pull/2007/head
Benoit Marty 9 months ago
parent
commit
2c01d486e0
  1. 10
      features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt
  2. 7
      libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/Feature.kt
  3. 11
      libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt

10
features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt

@ -75,10 +75,12 @@ class DeveloperSettingsPresenter @Inject constructor(
.collectAsState(initial = null) .collectAsState(initial = null)
LaunchedEffect(Unit) { LaunchedEffect(Unit) {
FeatureFlags.entries.forEach { feature -> FeatureFlags.entries
features[feature.key] = feature .filter { it.isFinished.not() }
enabledFeatures[feature.key] = featureFlagService.isFeatureEnabled(feature) .forEach { feature ->
} features[feature.key] = feature
enabledFeatures[feature.key] = featureFlagService.isFeatureEnabled(feature)
}
} }
val featureUiModels = createUiModels(features, enabledFeatures) val featureUiModels = createUiModels(features, enabledFeatures)
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()

7
libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/Feature.kt

@ -36,4 +36,11 @@ interface Feature {
* The default value of the feature (enabled or disabled). * The default value of the feature (enabled or disabled).
*/ */
val defaultValue: Boolean val defaultValue: Boolean
/**
* Whether the feature is finished or not.
* If false: the feature is still in development, it will appear in the developer options screen to be able to enable it and test it.
* If true: the feature is finished, it will not appear in the developer options screen.
*/
val isFinished: Boolean
} }

11
libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt

@ -25,52 +25,61 @@ enum class FeatureFlags(
override val key: String, override val key: String,
override val title: String, override val title: String,
override val description: String? = null, override val description: String? = null,
override val defaultValue: Boolean override val defaultValue: Boolean,
override val isFinished: Boolean,
) : Feature { ) : Feature {
LocationSharing( LocationSharing(
key = "feature.locationsharing", key = "feature.locationsharing",
title = "Allow user to share location", title = "Allow user to share location",
defaultValue = true, defaultValue = true,
isFinished = true,
), ),
Polls( Polls(
key = "feature.polls", key = "feature.polls",
title = "Polls", title = "Polls",
description = "Create poll and render poll events in the timeline", description = "Create poll and render poll events in the timeline",
defaultValue = true, defaultValue = true,
isFinished = true,
), ),
NotificationSettings( NotificationSettings(
key = "feature.notificationsettings", key = "feature.notificationsettings",
title = "Show notification settings", title = "Show notification settings",
defaultValue = true, defaultValue = true,
isFinished = true,
), ),
VoiceMessages( VoiceMessages(
key = "feature.voicemessages", key = "feature.voicemessages",
title = "Voice messages", title = "Voice messages",
description = "Send and receive voice messages", description = "Send and receive voice messages",
defaultValue = true, defaultValue = true,
isFinished = true,
), ),
PinUnlock( PinUnlock(
key = "feature.pinunlock", key = "feature.pinunlock",
title = "Pin unlock", title = "Pin unlock",
description = "Allow user to lock/unlock the app with a pin code or biometrics", description = "Allow user to lock/unlock the app with a pin code or biometrics",
defaultValue = true, defaultValue = true,
isFinished = true,
), ),
Mentions( Mentions(
key = "feature.mentions", key = "feature.mentions",
title = "Mentions", title = "Mentions",
description = "Type `@` to get mention suggestions and insert them", description = "Type `@` to get mention suggestions and insert them",
defaultValue = false, defaultValue = false,
isFinished = false,
), ),
SecureStorage( SecureStorage(
key = "feature.securestorage", key = "feature.securestorage",
title = "Chat backup", title = "Chat backup",
description = "Allow access to backup and restore chat history settings", description = "Allow access to backup and restore chat history settings",
defaultValue = false, defaultValue = false,
isFinished = false,
), ),
ReadReceipts( ReadReceipts(
key = "feature.readreceipts", key = "feature.readreceipts",
title = "Show read receipts", title = "Show read receipts",
description = null, description = null,
defaultValue = false, defaultValue = false,
isFinished = false,
), ),
} }

Loading…
Cancel
Save