fix: skip offline relays when fetching user metadata
This commit is contained in:
+1
-1
@@ -48,7 +48,7 @@ class UserFinderFilterAssembler(
|
||||
val group =
|
||||
listOf(
|
||||
UserOutboxFinderSubAssembler(client, cache, failureTracker, ::allKeys),
|
||||
UserWatcherSubAssembler(client, cache, ::allKeys),
|
||||
UserWatcherSubAssembler(client, cache, failureTracker, ::allKeys),
|
||||
UserReportsSubAssembler(client, cache, ::allKeys),
|
||||
UserCardsSubAssembler(client, cache, ::allKeys),
|
||||
)
|
||||
|
||||
+2
-1
@@ -48,6 +48,7 @@ val UserMetadataForKeyKinds =
|
||||
fun filterUserMetadataForKey(
|
||||
authors: Set<User>,
|
||||
indexRelays: Set<NormalizedRelayUrl>,
|
||||
cannotConnectRelays: Set<NormalizedRelayUrl>,
|
||||
since: EOSEAccountFast<User>,
|
||||
): List<RelayBasedFilter> {
|
||||
val perRelayUsers =
|
||||
@@ -57,7 +58,7 @@ fun filterUserMetadataForKey(
|
||||
key.outboxRelays()
|
||||
?: (key.allUsedRelays() + LocalCache.relayHints.hintsForKey(key.pubkeyHex) + indexRelays)
|
||||
|
||||
relays.forEach {
|
||||
(relays - cannotConnectRelays).forEach {
|
||||
add(it, key)
|
||||
}
|
||||
}
|
||||
|
||||
+9
-1
@@ -28,6 +28,7 @@ import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.UserFinder
|
||||
import com.vitorpamplona.amethyst.service.relays.EOSEAccountFast
|
||||
import com.vitorpamplona.quartz.nip01Core.core.Event
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.accessories.RelayOfflineTracker
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.pool.groupByRelay
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.SubscriptionListener
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter
|
||||
@@ -37,6 +38,7 @@ import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
class UserWatcherSubAssembler(
|
||||
client: INostrClient,
|
||||
val cache: LocalCache,
|
||||
val failureTracker: RelayOfflineTracker,
|
||||
allKeys: () -> Set<UserFinderQueryState>,
|
||||
) : BaseEoseManager<UserFinderQueryState>(client, allKeys) {
|
||||
/**
|
||||
@@ -99,7 +101,13 @@ class UserWatcherSubAssembler(
|
||||
)
|
||||
}
|
||||
|
||||
val newFilters = filterUserMetadataForKey(users, indexRelays, latestEOSEs).ifEmpty { null }
|
||||
val newFilters =
|
||||
filterUserMetadataForKey(
|
||||
users,
|
||||
indexRelays,
|
||||
failureTracker.cannotConnectRelays,
|
||||
latestEOSEs,
|
||||
).ifEmpty { null }
|
||||
|
||||
sub.updateFilters(newFilters?.groupByRelay())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user