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.
This commit is contained in:
AbronStudio 2025-08-06 15:57:52 +03:30
parent b5159450d7
commit 858d9d0e07
5 changed files with 32 additions and 37 deletions

View File

@ -693,7 +693,6 @@ fun AppEntrypoint(
val channelId = backStackEntry.arguments?.getString("channelId") ?: ""
ChannelScreen(
channelId = channelId,
onToggleDrawer = {},
useDrawer = false,
useBackButton = true,
backToChannelsScreen = {

View File

@ -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<PointerInputChange>) -> Unit =
val onFingerMoveHandler: (List<PointerInputChange>) -> Unit =
{ changeList: List<PointerInputChange> ->
changeList.firstOrNull()
?.let {

View File

@ -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(

View File

@ -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)

View File

@ -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(