diff --git a/app/src/main/java/com/m57/hermescontrol/Navigation.kt b/app/src/main/java/com/m57/hermescontrol/Navigation.kt index 31cddd6a..87d91847 100644 --- a/app/src/main/java/com/m57/hermescontrol/Navigation.kt +++ b/app/src/main/java/com/m57/hermescontrol/Navigation.kt @@ -179,6 +179,141 @@ private val DRAWER_ENTRIES = private val DRAWER_GESTURE_SCREENS: Set = ALL_NAV_ITEMS.mapTo(mutableSetOf()) { it.key } +private fun appEntryProvider( + sessionId: String?, + openDrawer: () -> Unit, +) = entryProvider { + entry { + ConnectScreenContent( + onConnected = { + NavigationController.resetTo(ChatScreen) + }, + modifier = Modifier.safeDrawingPadding(), + ) + } + + entry { + ChatScreenContent( + onOpenDrawer = openDrawer, + sessionId = sessionId, + ) + } + + entry { + HistoryScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + SettingsScreenContent( + onBack = { NavigationController.goBack() }, + ) + } + + entry { + SkillsScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + CronJobsScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + ProfilesScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + ToolsetsScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + AchievementsScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + PairingScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + ConfigScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + McpServersScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + WebhooksScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + ModelScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + GatewayScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + LogsScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + PluginsScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + ChannelsScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + KeysScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + SystemScreenContent( + onOpenDrawer = openDrawer, + ) + } + + entry { + KanbanScreenContent( + onOpenDrawer = openDrawer, + ) + } +} + @Composable fun MainNavigation(sessionId: String? = null) { val hasToken = !AuthManager.getToken().isNullOrBlank() @@ -206,7 +341,7 @@ fun MainNavigation(sessionId: String? = null) { val showBottomBar = currentScreen != ConnectScreen val gesturesEnabled = currentScreen in DRAWER_GESTURE_SCREENS - val openDrawer = { scope.launch { drawerState.open() } } + val openDrawer: () -> Unit = { scope.launch { drawerState.open() } } ModalNavigationDrawer( drawerState = drawerState, @@ -326,137 +461,7 @@ fun MainNavigation(sessionId: String? = null) { backStack = backStack, onBack = { NavigationController.goBack() }, entryProvider = - entryProvider { - entry { - ConnectScreenContent( - onConnected = { - NavigationController.resetTo(ChatScreen) - }, - modifier = Modifier.safeDrawingPadding(), - ) - } - - entry { - ChatScreenContent( - onOpenDrawer = { openDrawer() }, - sessionId = sessionId, - ) - } - - entry { - HistoryScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - SettingsScreenContent( - onBack = { NavigationController.goBack() }, - ) - } - - entry { - SkillsScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - CronJobsScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - ProfilesScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - ToolsetsScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - AchievementsScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - PairingScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - ConfigScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - McpServersScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - WebhooksScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - ModelScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - GatewayScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - LogsScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - PluginsScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - ChannelsScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - KeysScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - SystemScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - - entry { - KanbanScreenContent( - onOpenDrawer = { openDrawer() }, - ) - } - }, + appEntryProvider(sessionId, openDrawer), modifier = Modifier .padding(paddingValues)