From 47d57e5a440a4a40c1595d6908f8d93cb3cd9146 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 29 Sep 2023 16:09:11 -0400 Subject: [PATCH] Only adds search relays if none of the current relays are active for search. --- .../ui/actions/NewRelayListViewModel.kt | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewRelayListViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewRelayListViewModel.kt index bff3d41f1..c7ef1ec2b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewRelayListViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewRelayListViewModel.kt @@ -57,18 +57,25 @@ class NewRelayListViewModel : ViewModel() { _relays.update { var relayFile = account.userProfile().latestContactList?.relays() - // Ugly, but forces nostr.band as the only search-supporting relay today. - // TODO: Remove when search becomes more available. - if (relayFile?.none { it.key.removeSuffix("/") in Constants.forcedRelaysForSearchSet } == true) { - relayFile = relayFile + Constants.forcedRelayForSearch.map { - Pair( - it.url, - ContactListEvent.ReadWrite(it.read, it.write) - ) - } - } - if (relayFile != null) { + // Ugly, but forces nostr.band as the only search-supporting relay today. + // TODO: Remove when search becomes more available. + + val needsSearchRelay = relayFile.none { + it.key.removeSuffix("/") in Constants.forcedRelaysForSearchSet + } && relayFile.none { + account.localRelays.filter { localRelay -> localRelay.url == it.key }.firstOrNull()?.feedTypes?.contains(FeedType.SEARCH) ?: false + } + + if (needsSearchRelay) { + relayFile = relayFile + Constants.forcedRelayForSearch.map { + Pair( + it.url, + ContactListEvent.ReadWrite(it.read, it.write) + ) + } + } + relayFile.map { val liveRelay = RelayPool.getRelay(it.key) val localInfoFeedTypes = account.localRelays.filter { localRelay -> localRelay.url == it.key }.firstOrNull()?.feedTypes