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 <hy4ri@users.noreply.github.com>
This commit is contained in:
M57andM57 authored and GitHub committed 2026-06-30 15:44:30 +03:00
1 parent 7811a35d29
commit 970f4bfe7c
1 file changed
+1 -7
@@ -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