From a41ee653d85d0b6a5201cba9981ad42613cea399 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 2 Jun 2023 22:14:21 -0400 Subject: [PATCH] Moves reaction counts to a thread --- .../amethyst/ui/note/NoteCompose.kt | 2 +- .../amethyst/ui/note/ReactionsRow.kt | 26 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index cb9e70816..0adefca16 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -2120,7 +2120,7 @@ private fun RelayBadges(baseNote: Note) { var lazyRelayList by remember { mutableStateOf(emptyList()) } LaunchedEffect(key1 = noteRelaysState, key2 = expanded) { - withContext(Dispatchers.IO) { + launch(Dispatchers.IO) { val relayList = noteRelays.relays.map { it.removePrefix("wss://").removePrefix("ws://") } 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 652c2a85c..64c3a48b0 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 @@ -319,9 +319,16 @@ fun LikeReaction( fun LikeIcon(baseNote: Note, iconSize: Dp = 20.dp, grayTint: Color, loggedIn: User) { val reactionsState by baseNote.live().reactions.observeAsState() - val wasReactedByLoggedIn by remember(reactionsState) { - derivedStateOf { - reactionsState?.note?.isReactedBy(loggedIn) == true + var wasReactedByLoggedIn by remember(reactionsState) { + mutableStateOf(false) + } + + LaunchedEffect(key1 = reactionsState) { + launch(Dispatchers.Default) { + val newWasReactedByLoggedIn = reactionsState?.note?.isReactedBy(loggedIn) == true + if (wasReactedByLoggedIn != newWasReactedByLoggedIn) { + wasReactedByLoggedIn = newWasReactedByLoggedIn + } } } @@ -350,9 +357,16 @@ fun LikeIcon(baseNote: Note, iconSize: Dp = 20.dp, grayTint: Color, loggedIn: Us fun LikeText(baseNote: Note, grayTint: Color) { val reactionsState by baseNote.live().reactions.observeAsState() - val reactionsCount by remember(reactionsState) { - derivedStateOf { - " " + showCount(reactionsState?.note?.reactions?.size) + var reactionsCount by remember(reactionsState) { + mutableStateOf("") + } + + LaunchedEffect(key1 = reactionsState) { + launch(Dispatchers.Default) { + val newReactionsCount = " " + showCount(reactionsState?.note?.reactions?.size) + if (reactionsCount != newReactionsCount) { + reactionsCount = newReactionsCount + } } }