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(
@@ -151,6 +149,50 @@ private fun InnerReactionRow(
wantsToSeeReactions: MutableState<Boolean>, wantsToSeeReactions: MutableState<Boolean>,
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
nav: (String) -> Unit nav: (String) -> Unit
) {
GenericInnerReactionRow(
showReactionDetail = showReactionDetail,
one = {
WatchReactionsZapsBoostsAndDisplayIfExists(baseNote) {
RenderShowIndividualReactionsButton(wantsToSeeReactions)
}
},
two = {
ReplyReactionWithDialog(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav)
},
three = {
BoostWithDialog(
baseNote,
MaterialTheme.colorScheme.placeholderText,
accountViewModel,
nav
)
},
four = {
LikeReaction(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav)
},
five = {
ZapReaction(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav = nav)
},
six = {
ViewCountReaction(
note = baseNote,
grayTint = MaterialTheme.colorScheme.placeholderText,
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) { Row(verticalAlignment = CenterVertically, modifier = ReactionRowHeight) {
if (showReactionDetail) { if (showReactionDetail) {
@@ -158,14 +200,9 @@ private fun InnerReactionRow(
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
modifier = ReactionRowExpandButton modifier = ReactionRowExpandButton
) { ) {
val (value, elapsed) = measureTimedValue { Row(verticalAlignment = CenterVertically) {
Row(verticalAlignment = CenterVertically) { one()
WatchReactionsZapsBoostsAndDisplayIfExists(baseNote) {
RenderShowIndividualReactionsButton(wantsToSeeReactions)
}
}
} }
Log.d("Rendering Metrics", "Reactions Button: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
} }
} }
@@ -173,69 +210,45 @@ private fun InnerReactionRow(
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) } modifier = remember { Modifier.weight(1f) }
) { ) {
val (value, elapsed) = measureTimedValue { Row(verticalAlignment = CenterVertically) {
Row(verticalAlignment = CenterVertically) { two()
ReplyReactionWithDialog(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav)
}
} }
Log.d("Rendering Metrics", "Reaction Reply: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
} }
Column( Column(
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) } modifier = remember { Modifier.weight(1f) }
) { ) {
val (value, elapsed) = measureTimedValue { Row(verticalAlignment = CenterVertically) {
Row(verticalAlignment = CenterVertically) { three()
BoostWithDialog(
baseNote,
MaterialTheme.colorScheme.placeholderText,
accountViewModel,
nav
)
}
} }
Log.d("Rendering Metrics", "Reaction Boost: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
} }
Column( Column(
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) } modifier = remember { Modifier.weight(1f) }
) { ) {
val (value, elapsed) = measureTimedValue { Row(verticalAlignment = CenterVertically) {
Row(verticalAlignment = CenterVertically) { four()
LikeReaction(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav)
}
} }
Log.d("Rendering Metrics", "Reaction Likes: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
} }
Column( Column(
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) } modifier = remember { Modifier.weight(1f) }
) { ) {
val (value, elapsed) = measureTimedValue { Row(verticalAlignment = CenterVertically) {
Row(verticalAlignment = CenterVertically) { five()
ZapReaction(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav = nav)
}
} }
Log.d("Rendering Metrics", "Reaction Zaps: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
} }
Column( Column(
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
modifier = remember { Modifier.weight(1f) } modifier = remember { Modifier.weight(1f) }
) { ) {
val (value, elapsed) = measureTimedValue { Row(verticalAlignment = CenterVertically) {
Row(verticalAlignment = CenterVertically) { six()
ViewCountReaction(
note = baseNote,
grayTint = MaterialTheme.colorScheme.placeholderText,
viewCountColorFilter = MaterialTheme.colorScheme.placeholderTextColorFilter
)
}
} }
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) {
.fillMaxWidth() Modifier
.height(if (details) 24.dp else 4.dp), .fillMaxWidth()
.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 {