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

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

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

Loading…
Cancel
Save