From 970f4bfe7c1127320e10216e52ba8920c11625b8 Mon Sep 17 00:00:00 2001 From: M57 <41645758+Hy4ri@users.noreply.github.com> Date: Tue, 30 Jun 2026 15:44:30 +0300 Subject: [PATCH] fix(#424): login screen buttons unresponsive after logout (#427) Replace LaunchedEffect(startScreen) pattern with remember(startScreen) keyed recreation of NavBackStack. Mutating the same NavBackStack by clearing and re-adding entries confuses Navigation3's internal state, causing duplicate screen entries that compete for touch events. The fix creates a fresh NavBackStack whenever startScreen changes (chat -> landing), avoiding any stale-state mutation issues. Co-authored-by: M57 --- app/src/main/java/com/m57/hermescontrol/Navigation.kt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/app/src/main/java/com/m57/hermescontrol/Navigation.kt b/app/src/main/java/com/m57/hermescontrol/Navigation.kt index 0557a31d..f380942f 100644 --- a/app/src/main/java/com/m57/hermescontrol/Navigation.kt +++ b/app/src/main/java/com/m57/hermescontrol/Navigation.kt @@ -111,13 +111,7 @@ fun MainNavigation(sessionId: String? = null) { val hasToken = !token.isNullOrBlank() val startScreen: NavKey = if (hasToken) ChatScreen else LandingScreen - val backStack = remember { NavBackStack(startScreen) } - LaunchedEffect(startScreen) { - if (backStack.lastOrNull() != startScreen) { - backStack.clear() - backStack.add(startScreen) - } - } + val backStack = remember(startScreen) { NavBackStack(startScreen) } NavigationController.backStack = backStack val currentScreen = backStack.lastOrNull() ?: startScreen