From 91a0b4eda3b898e3dfd618d41144633255b5bd75 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 8 Apr 2026 14:04:15 -0400 Subject: [PATCH] Adds favorite relays to Global Feed --- .../main/java/com/vitorpamplona/amethyst/model/Account.kt | 1 + .../amethyst/model/topNavFeeds/FeedTopNavFilterState.kt | 3 ++- .../amethyst/model/topNavFeeds/global/GlobalFeedFlow.kt | 3 ++- .../model/topNavFeeds/global/GlobalTopNavFilter.kt | 7 ++++--- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index d7d6d5699c..5ffd5fcd84 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -408,6 +408,7 @@ class Account( followsRelays = defaultGlobalRelays.flow, blockedRelays = blockedRelayList.flow, proxyRelays = proxyRelayList.flow, + relayFeeds = relayFeedsList.flow, caches = feedDecryptionCaches, signer = signer, scope = scope, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/FeedTopNavFilterState.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/FeedTopNavFilterState.kt index faee3298d6..c4bba7800e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/FeedTopNavFilterState.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/FeedTopNavFilterState.kt @@ -57,6 +57,7 @@ class FeedTopNavFilterState( val followsRelays: StateFlow>, val blockedRelays: StateFlow>, val proxyRelays: StateFlow>, + val relayFeeds: StateFlow>, val caches: FeedDecryptionCaches, val signer: NostrSigner, val scope: CoroutineScope, @@ -64,7 +65,7 @@ class FeedTopNavFilterState( fun loadFlowsFor(listName: TopFilter): IFeedFlowsType = when (listName) { TopFilter.Global -> { - GlobalFeedFlow(followsRelays, proxyRelays) + GlobalFeedFlow(followsRelays, proxyRelays, relayFeeds) } TopFilter.AllFollows -> { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/global/GlobalFeedFlow.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/global/GlobalFeedFlow.kt index 2020bb3fe5..6f4a6ad508 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/global/GlobalFeedFlow.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/global/GlobalFeedFlow.kt @@ -30,8 +30,9 @@ import kotlinx.coroutines.flow.StateFlow class GlobalFeedFlow( val outboxRelays: StateFlow>, val proxyRelays: StateFlow>, + val relayFeeds: StateFlow>, ) : IFeedFlowsType { - val default = GlobalTopNavFilter(outboxRelays, proxyRelays) + val default = GlobalTopNavFilter(outboxRelays, proxyRelays, relayFeeds) override fun flow() = MutableStateFlow(default) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/global/GlobalTopNavFilter.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/global/GlobalTopNavFilter.kt index be4678e545..6ee086ab5d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/global/GlobalTopNavFilter.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/global/GlobalTopNavFilter.kt @@ -34,17 +34,18 @@ import kotlinx.coroutines.flow.combine class GlobalTopNavFilter( val outboxRelays: StateFlow>, val proxyRelays: StateFlow>, + val relayFeeds: StateFlow>, ) : IFeedTopNavFilter { override fun matchAuthor(pubkey: HexKey): Boolean = true override fun match(noteEvent: Event) = true override fun toPerRelayFlow(cache: LocalCache): Flow = - combine(outboxRelays, proxyRelays) { outboxRelays, proxyRelays -> + combine(outboxRelays, proxyRelays, relayFeeds) { outboxRelays, proxyRelays, relayFeeds -> if (proxyRelays.isNotEmpty()) { GlobalTopNavPerRelayFilterSet(proxyRelays.associateWith { GlobalTopNavPerRelayFilter }) } else { - GlobalTopNavPerRelayFilterSet(outboxRelays.associateWith { GlobalTopNavPerRelayFilter }) + GlobalTopNavPerRelayFilterSet((relayFeeds + outboxRelays).associateWith { GlobalTopNavPerRelayFilter }) } } @@ -52,6 +53,6 @@ class GlobalTopNavFilter( if (proxyRelays.value.isNotEmpty()) { GlobalTopNavPerRelayFilterSet(proxyRelays.value.associateWith { GlobalTopNavPerRelayFilter }) } else { - GlobalTopNavPerRelayFilterSet(outboxRelays.value.associateWith { GlobalTopNavPerRelayFilter }) + GlobalTopNavPerRelayFilterSet((relayFeeds.value + outboxRelays.value).associateWith { GlobalTopNavPerRelayFilter }) } }