From e9f4259da56e107571820809bfb8b2b558dbb259 Mon Sep 17 00:00:00 2001 From: Infi Date: Sun, 18 Jun 2023 17:40:15 +0200 Subject: [PATCH] fix: google messed up my back handler Signed-off-by: Infi --- .../revolt/screens/chat/ChatRouterScreen.kt | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt b/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt index dcbe27cb..bcb6182d 100644 --- a/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt @@ -200,9 +200,15 @@ fun ChatRouterScreen(topNav: NavController, viewModel: ChatRouterViewModel = hil var userContextSheetTarget by remember { mutableStateOf("") } var userContextSheetServer by remember { mutableStateOf(null) } - BackHandler(enabled = drawerState.isClosed) { - scope.launch { - drawerState.open() + val drawerBackHandler = remember { + { + scope.launch { + if (drawerState.isOpen) { + drawerState.close() + } else { + drawerState.open() + } + } } } @@ -488,10 +494,17 @@ fun ChatRouterScreen(topNav: NavController, viewModel: ChatRouterViewModel = hil Column(Modifier.fillMaxSize()) { NavHost(navController = navController, startDestination = "home") { composable("home") { + BackHandler { + drawerBackHandler() + } HomeScreen(navController = topNav) } composable("channel/{channelId}") { backStackEntry -> + BackHandler { + drawerBackHandler() + } + val channelId = backStackEntry.arguments?.getString("channelId") if (channelId != null) { ChannelScreen( @@ -514,6 +527,10 @@ fun ChatRouterScreen(topNav: NavController, viewModel: ChatRouterViewModel = hil } composable("no_current_channel") { + BackHandler { + drawerBackHandler() + } + NoCurrentChannelScreen() }