From b16a6614d4193c8bd418ae4d8e799e3fbf781205 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Sat, 21 Mar 2026 20:42:01 -0700 Subject: [PATCH] feat(android): gate Focus tab behind focus_mode_enabled feature flag --- .../chronomind/app/ui/navigation/NavHost.kt | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/com/chronomind/app/ui/navigation/NavHost.kt b/android/app/src/main/java/com/chronomind/app/ui/navigation/NavHost.kt index 478bccb..3aebb86 100644 --- a/android/app/src/main/java/com/chronomind/app/ui/navigation/NavHost.kt +++ b/android/app/src/main/java/com/chronomind/app/ui/navigation/NavHost.kt @@ -22,6 +22,9 @@ import com.chronomind.app.ui.screens.HistoryScreen import com.chronomind.app.ui.screens.SettingsScreen import com.chronomind.app.ui.screens.TimelineScreen import com.chronomind.app.ui.theme.CMColors +import com.bytelyst.platform.BLFeatureFlagClient +import dagger.hilt.android.EntryPointAccessors +import androidx.compose.ui.platform.LocalContext sealed class Screen(val route: String, val label: String, val icon: ImageVector) { data object Timeline : Screen("timeline", "Timeline", Icons.Filled.Schedule) @@ -32,9 +35,24 @@ sealed class Screen(val route: String, val label: String, val icon: ImageVector) val bottomNavItems = listOf(Screen.Timeline, Screen.Focus, Screen.History, Screen.Settings) +@dagger.hilt.InstallIn(dagger.hilt.components.SingletonComponent::class) +@dagger.hilt.EntryPoint +interface NavFlagEntryPoint { + fun featureFlagClient(): BLFeatureFlagClient +} + @Composable fun ChronoMindNavHost() { val navController = rememberNavController() + val context = LocalContext.current + val entryPoint = EntryPointAccessors.fromApplication(context, NavFlagEntryPoint::class.java) + val flagClient = entryPoint.featureFlagClient() + val visibleNavItems = bottomNavItems.filter { screen -> + when (screen) { + is Screen.Focus -> flagClient.isEnabled("focus_mode_enabled") + else -> true + } + } Scaffold( containerColor = CMColors.bg, @@ -46,7 +64,7 @@ fun ChronoMindNavHost() { val navBackStackEntry by navController.currentBackStackEntryAsState() val currentDestination = navBackStackEntry?.destination - bottomNavItems.forEach { screen -> + visibleNavItems.forEach { screen -> val selected = currentDestination?.hierarchy?.any { it.route == screen.route } == true NavigationBarItem( icon = { Icon(screen.icon, contentDescription = screen.label) },