Marking the selected post in the thread view

pull/152/head
Vitor Pamplona 2023-02-23 18:45:00 -05:00
rodzic 866e31e75b
commit b1a3c2542f
1 zmienionych plików z 22 dodań i 6 usunięć

Wyświetl plik

@ -98,13 +98,25 @@ fun ThreadFeedView(noteId: String, viewModel: FeedViewModel, accountViewModel: A
) {
itemsIndexed(state.feed.value, key = { _, item -> item.idHex }) { index, item ->
if (index == 0)
NoteMaster(item, accountViewModel = accountViewModel, navController = navController)
NoteMaster(item,
modifier = Modifier.drawReplyLevel(
item.replyLevel(),
MaterialTheme.colors.onSurface.copy(alpha = 0.32f),
if (item.idHex == noteId) MaterialTheme.colors.primary.copy(alpha = 0.52f) else MaterialTheme.colors.onSurface.copy(alpha = 0.32f)
),
accountViewModel = accountViewModel,
navController = navController
)
else {
Column() {
Row() {
NoteCompose(
item,
modifier = Modifier.drawReplyLevel(item.replyLevel(), MaterialTheme.colors.onSurface.copy(alpha = 0.32f)),
modifier = Modifier.drawReplyLevel(
item.replyLevel(),
MaterialTheme.colors.onSurface.copy(alpha = 0.32f),
if (item.idHex == noteId) MaterialTheme.colors.primary.copy(alpha = 0.52f) else MaterialTheme.colors.onSurface.copy(alpha = 0.32f)
),
isBoostedNote = false,
accountViewModel = accountViewModel,
navController = navController,
@ -125,7 +137,7 @@ fun ThreadFeedView(noteId: String, viewModel: FeedViewModel, accountViewModel: A
}
// Creates a Zebra pattern where each bar is a reply level.
fun Modifier.drawReplyLevel(level: Int, color: Color): Modifier = this
fun Modifier.drawReplyLevel(level: Int, color: Color, selected: Color): Modifier = this
.drawBehind {
val paddingDp = 2
val strokeWidthDp = 2
@ -137,7 +149,7 @@ fun Modifier.drawReplyLevel(level: Int, color: Color): Modifier = this
repeat(level) {
this.drawLine(
color,
if (it == level-1) selected else color,
Offset(padding + it * levelWidth, 0f),
Offset(padding + it * levelWidth, size.height),
strokeWidth = strokeWidth
@ -149,7 +161,11 @@ fun Modifier.drawReplyLevel(level: Int, color: Color): Modifier = this
.padding(start = (2 + (level * 3)).dp)
@Composable
fun NoteMaster(baseNote: Note, accountViewModel: AccountViewModel, navController: NavController) {
fun NoteMaster(baseNote: Note,
modifier: Modifier = Modifier,
accountViewModel: AccountViewModel,
navController: NavController
) {
val noteState by baseNote.live().metadata.observeAsState()
val note = noteState?.note
@ -174,7 +190,7 @@ fun NoteMaster(baseNote: Note, accountViewModel: AccountViewModel, navController
)
} else {
Column(
Modifier
modifier
.fillMaxWidth()
.padding(top = 10.dp)) {
Row(modifier = Modifier