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 -> itemsIndexed(state.feed.value, key = { _, item -> item.idHex }) { index, item ->
if (index == 0) 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 { else {
Column() { Column() {
Row() { Row() {
NoteCompose( NoteCompose(
item, 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, isBoostedNote = false,
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
navController = navController, 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. // 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 { .drawBehind {
val paddingDp = 2 val paddingDp = 2
val strokeWidthDp = 2 val strokeWidthDp = 2
@ -137,7 +149,7 @@ fun Modifier.drawReplyLevel(level: Int, color: Color): Modifier = this
repeat(level) { repeat(level) {
this.drawLine( this.drawLine(
color, if (it == level-1) selected else color,
Offset(padding + it * levelWidth, 0f), Offset(padding + it * levelWidth, 0f),
Offset(padding + it * levelWidth, size.height), Offset(padding + it * levelWidth, size.height),
strokeWidth = strokeWidth strokeWidth = strokeWidth
@ -149,7 +161,11 @@ fun Modifier.drawReplyLevel(level: Int, color: Color): Modifier = this
.padding(start = (2 + (level * 3)).dp) .padding(start = (2 + (level * 3)).dp)
@Composable @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 noteState by baseNote.live().metadata.observeAsState()
val note = noteState?.note val note = noteState?.note
@ -174,7 +190,7 @@ fun NoteMaster(baseNote: Note, accountViewModel: AccountViewModel, navController
) )
} else { } else {
Column( Column(
Modifier modifier
.fillMaxWidth() .fillMaxWidth()
.padding(top = 10.dp)) { .padding(top = 10.dp)) {
Row(modifier = Modifier Row(modifier = Modifier