From 081996d376740b95106ba4aba0b752dd475d8894 Mon Sep 17 00:00:00 2001 From: M57 <41645758+Hy4ri@users.noreply.github.com> Date: Sun, 21 Jun 2026 00:31:59 +0300 Subject: [PATCH] refactor: extract entryProvider from MainNavigation (#197) Extract the overly long `entryProvider` lambda out of `MainNavigation` into a separate `appEntryProvider` function to improve code readability and maintainability. --- .../java/com/m57/hermescontrol/Navigation.kt | 269 +++++++++--------- 1 file changed, 137 insertions(+), 132 deletions(-) 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)