Adds favorite relays to Global Feed

This commit is contained in:
Vitor Pamplona
2026-04-08 14:04:15 -04:00
parent b05799a892
commit 91a0b4eda3
4 changed files with 9 additions and 5 deletions
@@ -408,6 +408,7 @@ class Account(
followsRelays = defaultGlobalRelays.flow,
blockedRelays = blockedRelayList.flow,
proxyRelays = proxyRelayList.flow,
relayFeeds = relayFeedsList.flow,
caches = feedDecryptionCaches,
signer = signer,
scope = scope,
@@ -57,6 +57,7 @@ class FeedTopNavFilterState(
val followsRelays: StateFlow<Set<NormalizedRelayUrl>>,
val blockedRelays: StateFlow<Set<NormalizedRelayUrl>>,
val proxyRelays: StateFlow<Set<NormalizedRelayUrl>>,
val relayFeeds: StateFlow<Set<NormalizedRelayUrl>>,
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 -> {
@@ -30,8 +30,9 @@ import kotlinx.coroutines.flow.StateFlow
class GlobalFeedFlow(
val outboxRelays: StateFlow<Set<NormalizedRelayUrl>>,
val proxyRelays: StateFlow<Set<NormalizedRelayUrl>>,
val relayFeeds: StateFlow<Set<NormalizedRelayUrl>>,
) : IFeedFlowsType {
val default = GlobalTopNavFilter(outboxRelays, proxyRelays)
val default = GlobalTopNavFilter(outboxRelays, proxyRelays, relayFeeds)
override fun flow() = MutableStateFlow(default)
@@ -34,17 +34,18 @@ import kotlinx.coroutines.flow.combine
class GlobalTopNavFilter(
val outboxRelays: StateFlow<Set<NormalizedRelayUrl>>,
val proxyRelays: StateFlow<Set<NormalizedRelayUrl>>,
val relayFeeds: StateFlow<Set<NormalizedRelayUrl>>,
) : IFeedTopNavFilter {
override fun matchAuthor(pubkey: HexKey): Boolean = true
override fun match(noteEvent: Event) = true
override fun toPerRelayFlow(cache: LocalCache): Flow<GlobalTopNavPerRelayFilterSet> =
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 })
}
}