If tying a relay in the search screen, adds it to the results.
This commit is contained in:
+15
-2
@@ -37,9 +37,11 @@ import com.vitorpamplona.amethyst.model.User
|
|||||||
import com.vitorpamplona.amethyst.service.relayClient.searchCommand.SearchQueryState
|
import com.vitorpamplona.amethyst.service.relayClient.searchCommand.SearchQueryState
|
||||||
import com.vitorpamplona.amethyst.ui.dal.DefaultFeedOrder
|
import com.vitorpamplona.amethyst.ui.dal.DefaultFeedOrder
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.common.relaySetupInfoBuilder
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.common.relaySetupInfoBuilder
|
||||||
|
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
||||||
import com.vitorpamplona.quartz.nip05DnsIdentifiers.namecoin.NamecoinLookupException
|
import com.vitorpamplona.quartz.nip05DnsIdentifiers.namecoin.NamecoinLookupException
|
||||||
import com.vitorpamplona.quartz.nip05DnsIdentifiers.namecoin.NamecoinNameResolver
|
import com.vitorpamplona.quartz.nip05DnsIdentifiers.namecoin.NamecoinNameResolver
|
||||||
import com.vitorpamplona.quartz.nip10Notes.content.findHashtags
|
import com.vitorpamplona.quartz.nip10Notes.content.findHashtags
|
||||||
|
import com.vitorpamplona.quartz.utils.Rfc3986
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.FlowPreview
|
import kotlinx.coroutines.FlowPreview
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
@@ -214,9 +216,20 @@ class SearchBarViewModel(
|
|||||||
invalidations,
|
invalidations,
|
||||||
) { term, version ->
|
) { term, version ->
|
||||||
if (term.length > 1) {
|
if (term.length > 1) {
|
||||||
|
val isTypingRelay = term.length > 7 && (term.startsWith("wss://") || term.startsWith("ws://"))
|
||||||
|
val relayUrl =
|
||||||
|
if (isTypingRelay) {
|
||||||
|
runCatching { NormalizedRelayUrl(Rfc3986.normalize(term)) }.getOrNull()
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
val lower = term.lowercase()
|
val lower = term.lowercase()
|
||||||
LocalCache.relayHints.relayDB
|
|
||||||
.filter { _, relay -> relay.url.contains(lower) }
|
val relays =
|
||||||
|
listOfNotNull(relayUrl) +
|
||||||
|
LocalCache.relayHints.relayDB.filter { _, relay -> relay.url.contains(lower) }
|
||||||
|
|
||||||
|
relays
|
||||||
.map { relaySetupInfoBuilder(it) }
|
.map { relaySetupInfoBuilder(it) }
|
||||||
.sortedByDescending { it.relayStat.receivedBytes }
|
.sortedByDescending { it.relayStat.receivedBytes }
|
||||||
.take(20)
|
.take(20)
|
||||||
|
|||||||
Reference in New Issue
Block a user