From 0b22f528235e57adc57a7f1e361c14078fa351c8 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sat, 14 Mar 2026 13:17:36 +0100 Subject: [PATCH] Add FeatureFlags to disable features in release builds --- .../gestures/GestureSettingsScreen.kt | 5 ++- .../IntegrationsSettingsScreen.kt | 33 +++++++++++-------- .../java/de/mm20/launcher2/FeatureFlags.kt | 8 +++++ 3 files changed, 31 insertions(+), 15 deletions(-) create mode 100644 core/base/src/main/java/de/mm20/launcher2/FeatureFlags.kt diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/gestures/GestureSettingsScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/gestures/GestureSettingsScreen.kt index 79b9d9c18..e16560670 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/gestures/GestureSettingsScreen.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/gestures/GestureSettingsScreen.kt @@ -25,6 +25,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation3.runtime.NavKey +import de.mm20.launcher2.FeatureFlags import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.ktx.isAtLeastApiLevel import de.mm20.launcher2.preferences.GestureAction @@ -77,7 +78,9 @@ fun GestureSettingsScreen() { } val optionsWithFeed = - options + (stringResource(R.string.gesture_action_feed) to GestureAction.Feed) + if (FeatureFlags.feed) { + options + (stringResource(R.string.gesture_action_feed) to GestureAction.Feed) + } else options val context = LocalContext.current diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/integrations/IntegrationsSettingsScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/integrations/IntegrationsSettingsScreen.kt index dd9f7ac07..862019eb7 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/integrations/IntegrationsSettingsScreen.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/integrations/IntegrationsSettingsScreen.kt @@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation3.runtime.NavKey +import de.mm20.launcher2.FeatureFlags import de.mm20.launcher2.ktx.isAtLeastApiLevel import de.mm20.launcher2.ui.R import de.mm20.launcher2.ui.component.preferences.Preference @@ -46,13 +47,15 @@ fun IntegrationsSettingsScreen() { backStack.add(MediaIntegrationSettingsRoute) } ) - Preference( - title = stringResource(R.string.preference_feed_integration), - icon = R.drawable.news_24px, - onClick = { - backStack.add(FeedIntegrationSettingsRoute) - } - ) + if (FeatureFlags.feed) { + Preference( + title = stringResource(R.string.preference_feed_integration), + icon = R.drawable.news_24px, + onClick = { + backStack.add(FeedIntegrationSettingsRoute) + } + ) + } } } item { @@ -97,13 +100,15 @@ fun IntegrationsSettingsScreen() { } ) if (isAtLeastApiLevel(29)) { - Preference( - title = stringResource(R.string.preference_smartspacer_integration), - icon = R.drawable.smartspacer, - onClick = { - backStack.add(SmartspacerSettingsRoute) - } - ) + if (FeatureFlags.smartspacerIntegration) { + Preference( + title = stringResource(R.string.preference_smartspacer_integration), + icon = R.drawable.smartspacer, + onClick = { + backStack.add(SmartspacerSettingsRoute) + } + ) + } } } } diff --git a/core/base/src/main/java/de/mm20/launcher2/FeatureFlags.kt b/core/base/src/main/java/de/mm20/launcher2/FeatureFlags.kt new file mode 100644 index 000000000..45d1dcd6b --- /dev/null +++ b/core/base/src/main/java/de/mm20/launcher2/FeatureFlags.kt @@ -0,0 +1,8 @@ +package de.mm20.launcher2 + +import de.mm20.launcher2.base.BuildConfig + +object FeatureFlags { + val feed = BuildConfig.BUILD_TYPE != "release" + val smartspacerIntegration = BuildConfig.BUILD_TYPE != "release" +} \ No newline at end of file