diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index 2d4199ea6..1f112ba0f 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -1661,14 +1661,18 @@ class Account( // Ugly, but forces nostr.band as the only search-supporting relay today. // TODO: Remove when search becomes more available. - if (usersRelayList.none { it.activeTypes.contains(FeedType.SEARCH) }) { - usersRelayList = usersRelayList + Relay( - Constants.forcedRelayForSearch.url, - Constants.forcedRelayForSearch.read, - Constants.forcedRelayForSearch.write, - Constants.forcedRelayForSearch.feedTypes, - proxy - ) + val searchRelays = usersRelayList.filter { it.url.removeSuffix("/") in Constants.forcedRelaysForSearchSet } + val hasSearchRelay = usersRelayList.any { it.activeTypes.contains(FeedType.SEARCH) } + if (!hasSearchRelay && searchRelays.isEmpty()) { + usersRelayList = usersRelayList + Constants.forcedRelayForSearch.map { + Relay( + it.url, + it.read, + it.write, + it.feedTypes, + proxy + ) + } } return usersRelayList.toTypedArray() diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Constants.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Constants.kt index d62179f8d..186bc3db5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Constants.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Constants.kt @@ -16,9 +16,7 @@ object Constants { } val defaultRelays = arrayOf( - // Free relays for DMs and Follows - RelaySetupInfo("wss://no.str.cr", read = true, write = true, feedTypes = activeTypes), - RelaySetupInfo("wss://relay.snort.social", read = true, write = true, feedTypes = activeTypes), + // Free relays for only DMs and Follows due to the amount of spam RelaySetupInfo("wss://relay.damus.io", read = true, write = true, feedTypes = activeTypes), // Chats @@ -40,6 +38,7 @@ object Constants { // NewRelayListViewModel.Relay("wss://brb.io", read = true, write = true, feedTypes = activeTypes), // Paid relays + RelaySetupInfo("wss://relay.snort.social", read = true, write = false, feedTypes = activeTypesGlobalChats), RelaySetupInfo("wss://relay.nostr.com.au", read = true, write = false, feedTypes = activeTypesGlobalChats), RelaySetupInfo("wss://eden.nostr.land", read = true, write = false, feedTypes = activeTypesGlobalChats), RelaySetupInfo("wss://nostr.milou.lol", read = true, write = false, feedTypes = activeTypesGlobalChats), @@ -51,8 +50,15 @@ object Constants { RelaySetupInfo("wss://relay.nostrati.com", read = true, write = false, feedTypes = activeTypesGlobalChats), // Supporting NIP-50 - RelaySetupInfo("wss://relay.nostr.band", read = true, write = false, feedTypes = activeTypesSearch) + RelaySetupInfo("wss://relay.nostr.band", read = true, write = false, feedTypes = activeTypesSearch), + RelaySetupInfo("wss://filter.nostr.wine", read = true, write = false, feedTypes = activeTypesSearch), + RelaySetupInfo("wss://relay.noswhere.com", read = true, write = false, feedTypes = activeTypesSearch) ) - val forcedRelayForSearch = RelaySetupInfo("wss://relay.nostr.band", read = true, write = false, feedTypes = activeTypesSearch) + val forcedRelayForSearch = arrayOf( + RelaySetupInfo("wss://relay.nostr.band", read = true, write = false, feedTypes = activeTypesSearch), + RelaySetupInfo("wss://filter.nostr.wine", read = true, write = false, feedTypes = activeTypesSearch), + RelaySetupInfo("wss://relay.noswhere.com", read = true, write = false, feedTypes = activeTypesSearch) + ) + val forcedRelaysForSearchSet = forcedRelayForSearch.map { it.url } } 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 ef787703a..f6f03f0fe 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 @@ -42,11 +42,13 @@ class NewRelayListViewModel : ViewModel() { // Ugly, but forces nostr.band as the only search-supporting relay today. // TODO: Remove when search becomes more available. - if (relayFile?.none { it.key == Constants.forcedRelayForSearch.url } == true) { - relayFile = relayFile + Pair( - Constants.forcedRelayForSearch.url, - ContactListEvent.ReadWrite(Constants.forcedRelayForSearch.read, Constants.forcedRelayForSearch.write) - ) + 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) {