From fe31855860d12675255326f15ed4bf9909578619 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 25 Jun 2023 19:18:11 -0400 Subject: [PATCH] Minor performance improvements in reaction row --- .../amethyst/ui/note/ReactionsRow.kt | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt index 5e0560a3d..2249fd46f 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt @@ -3,6 +3,7 @@ package com.vitorpamplona.amethyst.ui.note import android.content.Context import android.widget.Toast import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.Crossfade import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.slideInVertically @@ -502,16 +503,16 @@ fun ReplyReaction( fun ReplyCounter(baseNote: Note, textColor: Color) { val repliesState by baseNote.live().replies.map { it.note.replies.size - }.distinctUntilChanged().observeAsState() + }.observeAsState(0) - SlidingAnimation(repliesState ?: 0, textColor) + SlidingAnimation(repliesState, textColor) } @Composable @OptIn(ExperimentalAnimationApi::class) -private fun SlidingAnimation(count: Int, textColor: Color) { +private fun SlidingAnimation(baseCount: Int, textColor: Color) { AnimatedContent( - targetState = count, + targetState = baseCount, transitionSpec = { if (targetState > initialState) { slideInVertically { -it } with slideOutVertically { it } @@ -521,10 +522,11 @@ private fun SlidingAnimation(count: Int, textColor: Color) { } ) { count -> Text( - text = showCount(count), + text = remember { showCount(count) }, fontSize = Font14SP, color = textColor, - modifier = HalfStartPadding + modifier = HalfStartPadding, + maxLines = 1 ) } } @@ -543,10 +545,10 @@ private fun SlidingAnimation(amount: String, textColor: Color) { } ) { count -> Text( - text = amount, + text = count, fontSize = Font14SP, color = textColor, - modifier = HalfStartPadding + maxLines = 1 ) } }