From 858d9d0e07fc508d1a42efbe84b54fe4dd3657a5 Mon Sep 17 00:00:00 2001 From: AbronStudio Date: Wed, 6 Aug 2025 15:57:52 +0330 Subject: [PATCH] Refactor: Remove drawer and update navigation This commit removes the drawer functionality from the chat screens and updates navigation accordingly. - Removed `drawerIsOpen` parameter and related logic from `RegularMessage.kt` and `ChannelScreen.kt`. - Updated `ChannelScreen.kt` to navigate back to the channels screen or invoke a custom back action instead of toggling the drawer. - Removed `onToggleDrawer` parameter from `ChannelScreen` invocation in `MainActivity.kt`. - Simplified navigation logic in `ChatRouterScreen.kt` by removing drawer state handling and updating conditions for selected bottom navigation items. - Updated styling for `ChannelSideDrawer.kt` by replacing `MaterialTheme.shapes.medium.copy` with `RoundedCornerShape` for top start corner rounding. --- .../chat/revolt/activities/MainActivity.kt | 1 - .../screens/chat/atoms/RegularMessage.kt | 4 +-- .../screens/chat/drawer/ChannelSideDrawer.kt | 10 ++----- .../revolt/screens/chat/ChatRouterScreen.kt | 28 ++++++++----------- .../chat/views/channel/ChannelScreen.kt | 26 +++++++++++------ 5 files changed, 32 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/chat/revolt/activities/MainActivity.kt b/app/src/main/java/chat/revolt/activities/MainActivity.kt index aa0d80d3..60fc404d 100644 --- a/app/src/main/java/chat/revolt/activities/MainActivity.kt +++ b/app/src/main/java/chat/revolt/activities/MainActivity.kt @@ -693,7 +693,6 @@ fun AppEntrypoint( val channelId = backStackEntry.arguments?.getString("channelId") ?: "" ChannelScreen( channelId = channelId, - onToggleDrawer = {}, useDrawer = false, useBackButton = true, backToChannelsScreen = { diff --git a/app/src/main/java/chat/revolt/composables/screens/chat/atoms/RegularMessage.kt b/app/src/main/java/chat/revolt/composables/screens/chat/atoms/RegularMessage.kt index 3ba2a7e4..505102f0 100644 --- a/app/src/main/java/chat/revolt/composables/screens/chat/atoms/RegularMessage.kt +++ b/app/src/main/java/chat/revolt/composables/screens/chat/atoms/RegularMessage.kt @@ -63,7 +63,6 @@ const val SWIPE_TO_REPLY_THRESHOLD = -450f fun RegularMessage( message: Message, channel: Channel?, - drawerIsOpen: Boolean, setDrawerGestureEnabled: (Boolean) -> Unit, setDisableScroll: (Boolean) -> Unit, showMessageBottomSheet: (String) -> Unit, @@ -77,7 +76,6 @@ fun RegularMessage( var offsetX by remember { mutableFloatStateOf(0f) } val animOffsetX by animateFloatAsState( when { - drawerIsOpen -> 0f offsetX > -20f -> 0f else -> offsetX }, @@ -103,7 +101,7 @@ fun RegularMessage( label = "Swipe to Reply indicator foreground" ) - var onFingerMoveHandler: (List) -> Unit = + val onFingerMoveHandler: (List) -> Unit = { changeList: List -> changeList.firstOrNull() ?.let { diff --git a/app/src/main/java/chat/revolt/composables/screens/chat/drawer/ChannelSideDrawer.kt b/app/src/main/java/chat/revolt/composables/screens/chat/drawer/ChannelSideDrawer.kt index 7cdf2efb..65bd40fc 100644 --- a/app/src/main/java/chat/revolt/composables/screens/chat/drawer/ChannelSideDrawer.kt +++ b/app/src/main/java/chat/revolt/composables/screens/chat/drawer/ChannelSideDrawer.kt @@ -421,13 +421,9 @@ fun ChannelSideDrawer( } Column( Modifier - .clip( - MaterialTheme.shapes.medium.copy( - topStart = CornerSize(24.dp), - ) - ) - .background(MaterialTheme.colorScheme.surfaceContainer) - .weight(1f) + .clip(shape = RoundedCornerShape(topStart = 24.dp)) + .background(color = MaterialTheme.colorScheme.surfaceContainer) + .weight(weight = 1f) .fillMaxHeight() ) { Box( 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 61bf41bb..e01f0eb2 100644 --- a/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt @@ -25,7 +25,6 @@ import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Person import androidx.compose.material3.AlertDialog import androidx.compose.material3.BottomAppBar -import androidx.compose.material3.DrawerState import androidx.compose.material3.DrawerValue import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -823,10 +822,8 @@ fun ChannelNavigator( currentServer: String?, toggleDrawer: () -> Unit, isTouchExplorationEnabled: Boolean, - drawerState: DrawerState? = null, setDrawerGestureEnabled: (Boolean) -> Unit = {}, ) { - val scope = rememberCoroutineScope() when (dest) { is ChatRouterDestination.Channel -> { ChannelScreen( @@ -838,19 +835,11 @@ fun ChannelNavigator( serverID = currentServer ) ) - } - }, - onToggleDrawer = { - scope.launch { - if (drawerState?.isOpen == true) { - drawerState.close() - } else { - drawerState?.open() - } - } + } ?: viewModel.setSaveDestination( + ChatRouterDestination.Home + ) }, setDrawerGestureEnabled = setDrawerGestureEnabled, - drawerIsOpen = drawerState?.isOpen == true, ) } @@ -869,7 +858,13 @@ fun ChannelNavigator( label = { Text(text = "you") }, - selected = dest is ChatRouterDestination.Home, + selected = when(dest){ + is ChatRouterDestination.ServersChannels, + is ChatRouterDestination.NoCurrentChannel, + ChatRouterDestination.Home, + ChatRouterDestination.Discover -> true + else -> false + } , enabled = true, onClick = { viewModel.setSaveDestination(ChatRouterDestination.Home) @@ -947,8 +942,7 @@ fun ChannelNavigator( ) } - is ChatRouterDestination.Channel -> { - } + is ChatRouterDestination.Channel -> {} is ChatRouterDestination.NoCurrentChannel -> { NoCurrentChannelScreen(onDrawerClicked = toggleDrawer) diff --git a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt index 728d4d58..fa55778e 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt @@ -189,12 +189,10 @@ private const val NOT_ENOUGH_SPACE_FOR_PANES_THRESHOLD = 500 @Composable fun ChannelScreen( channelId: String, - onToggleDrawer: () -> Unit, useDrawer: Boolean = false, backToChannelsScreen: (() -> Unit)?, useBackButton: Boolean = false, setDrawerGestureEnabled: (Boolean) -> Unit = {}, - drawerIsOpen: Boolean = false, backButtonAction: (() -> Unit)? = null, useChatUI: Boolean = false, viewModel: ChannelScreenViewModel = hiltViewModel() @@ -629,7 +627,9 @@ fun ChannelScreen( windowInsets = if (useChatUI) WindowInsets.statusBars else WindowInsets.zero, navigationIcon = { if (useDrawer) { - IconButton(onClick = onToggleDrawer) { + IconButton(onClick = { + backToChannelsScreen?.invoke() + }) { Icon( painter = painterResource(R.drawable.icn_menu_24dp), contentDescription = stringResource(id = R.string.menu) @@ -650,7 +650,7 @@ fun ChannelScreen( } ) { pv -> if (viewModel.showGeoGate) { - ChannelScreenGeoGate { onToggleDrawer() } + ChannelScreenGeoGate { backToChannelsScreen?.invoke() } } else { Crossfade( targetState = viewModel.ageGateUnlocked, @@ -665,10 +665,11 @@ fun ChannelScreen( } }, onDeny = { - onToggleDrawer() + backToChannelsScreen?.invoke() } ) } + null -> { Box( contentAlignment = Alignment.Center, @@ -677,6 +678,7 @@ fun ChannelScreen( CircularProgressIndicator(modifier = Modifier.size(48.dp)) } } + true -> { Column( modifier = Modifier @@ -731,7 +733,6 @@ fun ChannelScreen( RegularMessage( item.message, viewModel.channel, - drawerIsOpen = drawerIsOpen, setDrawerGestureEnabled = { setDrawerGestureEnabled(it) }, @@ -972,7 +973,11 @@ fun ChannelScreen( ReplyManager( replies = viewModel.draftReplyTo, onToggleMention = { - scope.launch { viewModel.toggleMentionOnReply(it.id) } + scope.launch { + viewModel.toggleMentionOnReply( + it.id + ) + } }, onRemove = { viewModel.draftReplyTo.remove(it) @@ -1027,7 +1032,9 @@ fun ChannelScreen( trailingIcon = { Icon( painter = painterResource(R.drawable.icn_close_24dp), - contentDescription = stringResource(R.string.message_field_editing_message_cancel_alt), + contentDescription = stringResource( + R.string.message_field_editing_message_cancel_alt + ), tint = MaterialTheme.colorScheme.onSurface, modifier = Modifier.alpha(0.8f) ) @@ -1090,7 +1097,8 @@ fun ChannelScreen( DropdownMenu( expanded = viewModel.activePane == ChannelScreenActivePane.AttachmentPicker && notEnoughSpaceForPanes, onDismissRequest = { - viewModel.activePane = ChannelScreenActivePane.None + viewModel.activePane = + ChannelScreenActivePane.None } ) { DropdownMenuItem(