From 47e69ce045ec8fcd7b3130983b267a2de44bec75 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 3 Jul 2025 10:30:53 -0400 Subject: [PATCH] Improves caching on the allRelays call on the Nostr Client --- .../amethyst/ui/actions/RelaySelectionDialog.kt | 4 +--- .../quartz/nip01Core/relay/client/NostrClient.kt | 5 +---- .../quartz/nip01Core/relay/client/pool/RelayPool.kt | 2 +- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt index 89639c711..f95a045ee 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt @@ -47,11 +47,9 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties -import com.google.common.collect.Multimaps.index import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.service.Nip11Retriever import com.vitorpamplona.amethyst.ui.components.SetDialogToEdgeToEdge -import com.vitorpamplona.amethyst.ui.navigation.EmptyNav.nav import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.note.buttons.CloseButton import com.vitorpamplona.amethyst.ui.note.buttons.SaveButton @@ -89,7 +87,7 @@ fun RelaySelectionDialog( ) { var relays by remember { mutableStateOf( - accountViewModel.account.client.connectedRelayList().map { + accountViewModel.account.client.allAvailableRelays().map { RelayList( relay = it, isSelected = preSelectedList.any { relayUrl -> it == relayUrl }, diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClient.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClient.kt index 0c61ccc7a..56dcf7955 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClient.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/client/NostrClient.kt @@ -39,7 +39,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flowOn -import kotlinx.coroutines.flow.forEach import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.stateIn @@ -89,7 +88,7 @@ class NostrClient( eventOutbox.forEachUnsentEvent(relay, liveRelay::send) } - fun connectedRelayList() = relayPool.getAll() + fun allAvailableRelays() = relayPool.getAll() // Reconnects all relays that may have disconnected fun connect() = relayPool.connect() @@ -239,7 +238,5 @@ class NostrClient( fun getSubscriptionFiltersOrNull(subId: String): List? = activeSubscriptions.getSubscriptionFiltersOrNull(subId) - fun connectedRelays() = relayPool.connectedRelays() - fun relayStatusFlow() = relayPool.statusFlow } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/client/pool/RelayPool.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/client/pool/RelayPool.kt index 484fe760b..76b4d6f8b 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/client/pool/RelayPool.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/client/pool/RelayPool.kt @@ -54,7 +54,7 @@ class RelayPool( fun getRelay(url: NormalizedRelayUrl): IRelayClient? = relays.get(url) - fun getAll() = relays.keys() + fun getAll() = statusFlow.value.connected fun getAllNeedsToReconnect() = relays.filter { url, relay -> relay.needsToReconnect() }