Modifies the flow to only output changes in the relay piece that has modified.

This commit is contained in:
Vitor Pamplona
2025-11-11 19:01:20 -05:00
parent a5207c3f0a
commit e8eb4c688c
@@ -60,6 +60,7 @@ import com.vitorpamplona.amethyst.ui.theme.Size17Modifier
import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer
import com.vitorpamplona.amethyst.ui.theme.noteComposeRelayBox import com.vitorpamplona.amethyst.ui.theme.noteComposeRelayBox
import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.amethyst.ui.theme.placeholderText
import kotlinx.coroutines.flow.mapNotNull
@Composable @Composable
fun RelayBadges( fun RelayBadges(
@@ -122,12 +123,14 @@ fun WatchAndRenderRelay(
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
nav: INav, nav: INav,
) { ) {
val noteRelays by baseNote val relay by baseNote
.flow() .flow()
.relays.stateFlow .relays.stateFlow
.collectAsStateWithLifecycle() .mapNotNull {
it.note.relays.getOrNull(relayIndex)
}.collectAsStateWithLifecycle(baseNote.relays.getOrNull(relayIndex))
CrossfadeIfEnabled(targetState = noteRelays.note.relays.getOrNull(relayIndex), label = "RenderRelay", modifier = Size17Modifier, accountViewModel = accountViewModel) { CrossfadeIfEnabled(targetState = relay, label = "RenderRelay", modifier = Size17Modifier, accountViewModel = accountViewModel) {
if (it != null) { if (it != null) {
RenderRelay(it, accountViewModel, nav) RenderRelay(it, accountViewModel, nav)
} }