feat: add jump to message to pinned message screen

This commit is contained in:
infi 2026-07-25 01:06:01 +02:00
parent 1d237f0d8e
commit 0d414d48aa
1 changed files with 36 additions and 11 deletions

View File

@ -177,20 +177,45 @@ fun ChannelPinsScreen(
}
}
} else {
LazyColumn(contentPadding = WindowInsets.navigationBars.asPaddingValues()) {
items(
viewModel.pinnedMessages.size,
key = { i -> viewModel.pinnedMessages[i].id ?: i }) { i ->
val message = viewModel.pinnedMessages[i].copy(tail = false)
if (message.system != null) {
SystemMessage(message)
} else {
chat.stoat.composables.chat.Message(message = message)
PinnedMessageList(
messages = viewModel.pinnedMessages,
onMessageSelected = { messageId ->
navController.previousBackStackEntry?.savedStateHandle?.apply {
set(CHANNEL_MESSAGE_JUMP_CHANNEL_KEY, channelId)
set(CHANNEL_MESSAGE_JUMP_MESSAGE_KEY, messageId)
}
navController.popBackStack()
}
}
)
}
}
}
}
}
}
@Composable
internal fun PinnedMessageList(
messages: List<Message>,
onMessageSelected: (String) -> Unit,
) {
LazyColumn(contentPadding = WindowInsets.navigationBars.asPaddingValues()) {
items(
messages.size,
key = { index -> messages[index].id ?: index },
) { index ->
val message = messages[index].copy(tail = false)
val onClick = {
message.id?.let(onMessageSelected)
Unit
}
if (message.system != null) {
SystemMessage(message, onClick = onClick)
} else {
chat.stoat.composables.chat.Message(
message = message,
onClick = onClick,
)
}
}
}
}