Generalizing InnerReaction Row

This commit is contained in:
Vitor Pamplona
2023-10-30 15:44:15 -04:00
parent c304f7c69d
commit 717c3bc45e
@@ -1,7 +1,6 @@
package com.vitorpamplona.amethyst.ui.note package com.vitorpamplona.amethyst.ui.note
import android.content.Context import android.content.Context
import android.util.Log
import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.AnimatedContentTransitionScope import androidx.compose.animation.AnimatedContentTransitionScope
import androidx.compose.animation.ContentTransform import androidx.compose.animation.ContentTransform
@@ -117,7 +116,6 @@ import java.math.BigDecimal
import java.math.RoundingMode import java.math.RoundingMode
import java.text.DecimalFormat import java.text.DecimalFormat
import kotlin.math.roundToInt import kotlin.math.roundToInt
import kotlin.time.measureTimedValue
@Composable @Composable
fun ReactionsRow( fun ReactionsRow(
@@ -152,90 +150,105 @@ private fun InnerReactionRow(
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
nav: (String) -> Unit nav: (String) -> Unit
) { ) {
Row(verticalAlignment = CenterVertically, modifier = ReactionRowHeight) { GenericInnerReactionRow(
if (showReactionDetail) { showReactionDetail = showReactionDetail,
Column( one = {
verticalArrangement = Arrangement.Center,
modifier = ReactionRowExpandButton
) {
val (value, elapsed) = measureTimedValue {
Row(verticalAlignment = CenterVertically) {
WatchReactionsZapsBoostsAndDisplayIfExists(baseNote) { WatchReactionsZapsBoostsAndDisplayIfExists(baseNote) {
RenderShowIndividualReactionsButton(wantsToSeeReactions) RenderShowIndividualReactionsButton(wantsToSeeReactions)
} }
} },
} two = {
Log.d("Rendering Metrics", "Reactions Button: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
}
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
val (value, elapsed) = measureTimedValue {
Row(verticalAlignment = CenterVertically) {
ReplyReactionWithDialog(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav) ReplyReactionWithDialog(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav)
} },
} three = {
Log.d("Rendering Metrics", "Reaction Reply: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
val (value, elapsed) = measureTimedValue {
Row(verticalAlignment = CenterVertically) {
BoostWithDialog( BoostWithDialog(
baseNote, baseNote,
MaterialTheme.colorScheme.placeholderText, MaterialTheme.colorScheme.placeholderText,
accountViewModel, accountViewModel,
nav nav
) )
} },
} four = {
Log.d("Rendering Metrics", "Reaction Boost: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
val (value, elapsed) = measureTimedValue {
Row(verticalAlignment = CenterVertically) {
LikeReaction(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav) LikeReaction(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav)
} },
} five = {
Log.d("Rendering Metrics", "Reaction Likes: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
val (value, elapsed) = measureTimedValue {
Row(verticalAlignment = CenterVertically) {
ZapReaction(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav = nav) ZapReaction(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav = nav)
} },
} six = {
Log.d("Rendering Metrics", "Reaction Zaps: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
val (value, elapsed) = measureTimedValue {
Row(verticalAlignment = CenterVertically) {
ViewCountReaction( ViewCountReaction(
note = baseNote, note = baseNote,
grayTint = MaterialTheme.colorScheme.placeholderText, grayTint = MaterialTheme.colorScheme.placeholderText,
viewCountColorFilter = MaterialTheme.colorScheme.placeholderTextColorFilter viewCountColorFilter = MaterialTheme.colorScheme.placeholderTextColorFilter
) )
} }
)
}
@Composable
private fun GenericInnerReactionRow(
showReactionDetail: Boolean,
one: @Composable () -> Unit,
two: @Composable () -> Unit,
three: @Composable () -> Unit,
four: @Composable () -> Unit,
five: @Composable () -> Unit,
six: @Composable () -> Unit
) {
Row(verticalAlignment = CenterVertically, modifier = ReactionRowHeight) {
if (showReactionDetail) {
Column(
verticalArrangement = Arrangement.Center,
modifier = ReactionRowExpandButton
) {
Row(verticalAlignment = CenterVertically) {
one()
}
}
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
Row(verticalAlignment = CenterVertically) {
two()
}
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
Row(verticalAlignment = CenterVertically) {
three()
}
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
Row(verticalAlignment = CenterVertically) {
four()
}
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
Row(verticalAlignment = CenterVertically) {
five()
}
}
Column(
verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) }
) {
Row(verticalAlignment = CenterVertically) {
six()
} }
Log.d("Rendering Metrics", "Reaction Views: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
} }
} }
} }
@@ -292,9 +305,11 @@ fun RenderZapRaiser(baseNote: Note, zapraiserAmount: Long, details: Boolean, acc
} }
LinearProgressIndicator( LinearProgressIndicator(
modifier = Modifier modifier = remember(details) {
Modifier
.fillMaxWidth() .fillMaxWidth()
.height(if (details) 24.dp else 4.dp), .height(if (details) 24.dp else 4.dp)
},
color = color, color = color,
progress = zapraiserStatus.progress progress = zapraiserStatus.progress
) )
@@ -374,7 +389,7 @@ private fun RenderShowIndividualReactionsButton(wantsToSeeReactions: MutableStat
}, },
modifier = Size20Modifier modifier = Size20Modifier
) { ) {
Crossfade(targetState = wantsToSeeReactions.value) { Crossfade(targetState = wantsToSeeReactions.value, label = "RenderShowIndividualReactionsButton") {
if (it) { if (it) {
ExpandLessIcon(modifier = Size22Modifier) ExpandLessIcon(modifier = Size22Modifier)
} else { } else {