Migrates event finder and channel finder to the new No Eose cache manager
This commit is contained in:
+3
-7
@@ -20,11 +20,10 @@
|
||||
*/
|
||||
package com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.nip28PublicChats
|
||||
|
||||
import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.SingleSubEoseManager
|
||||
import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.SingleSubNoEoseCacheEoseManager
|
||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.ChannelFinderQueryState
|
||||
import com.vitorpamplona.ammolite.relays.NostrClient
|
||||
import com.vitorpamplona.ammolite.relays.TypedFilter
|
||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
||||
|
||||
/**
|
||||
* This assembler observes loads missing public chats when needed.
|
||||
@@ -38,11 +37,8 @@ import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
||||
class ChannelLoaderSubAssembler(
|
||||
client: NostrClient,
|
||||
allKeys: () -> Set<ChannelFinderQueryState>,
|
||||
) : SingleSubEoseManager<ChannelFinderQueryState>(client, allKeys, invalidateAfterEose = true) {
|
||||
override fun updateFilter(
|
||||
keys: List<ChannelFinderQueryState>,
|
||||
since: Map<String, EOSETime>?,
|
||||
): List<TypedFilter>? = filterMissingChannelsById(keys, since)
|
||||
) : SingleSubNoEoseCacheEoseManager<ChannelFinderQueryState>(client, allKeys, invalidateAfterEose = true) {
|
||||
override fun updateFilter(keys: List<ChannelFinderQueryState>): List<TypedFilter>? = filterMissingChannelsById(keys)
|
||||
|
||||
override fun distinct(key: ChannelFinderQueryState) = key.channel.idHex
|
||||
}
|
||||
|
||||
+1
-5
@@ -24,14 +24,10 @@ import com.vitorpamplona.amethyst.model.PublicChatChannel
|
||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.channel.ChannelFinderQueryState
|
||||
import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES
|
||||
import com.vitorpamplona.ammolite.relays.TypedFilter
|
||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
||||
import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter
|
||||
import com.vitorpamplona.quartz.nip28PublicChat.admin.ChannelCreateEvent
|
||||
|
||||
fun filterMissingChannelsById(
|
||||
keys: List<ChannelFinderQueryState>,
|
||||
since: Map<String, EOSETime>?,
|
||||
): List<TypedFilter>? {
|
||||
fun filterMissingChannelsById(keys: List<ChannelFinderQueryState>): List<TypedFilter>? {
|
||||
val firstTimers =
|
||||
keys.mapNotNullTo(mutableSetOf()) {
|
||||
if (it.channel is PublicChatChannel && it.channel.event == null) {
|
||||
|
||||
+3
-10
@@ -24,14 +24,10 @@ import com.vitorpamplona.amethyst.model.AddressableNote
|
||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.EventFinderQueryState
|
||||
import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES
|
||||
import com.vitorpamplona.ammolite.relays.TypedFilter
|
||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
||||
import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter
|
||||
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
||||
|
||||
fun filterMissingAddressables(
|
||||
keys: List<EventFinderQueryState>,
|
||||
since: Map<String, EOSETime>?,
|
||||
): List<TypedFilter>? {
|
||||
fun filterMissingAddressables(keys: List<EventFinderQueryState>): List<TypedFilter>? {
|
||||
val missingAddressables = mutableSetOf<Address>()
|
||||
|
||||
keys.forEach {
|
||||
@@ -47,13 +43,10 @@ fun filterMissingAddressables(
|
||||
}
|
||||
}
|
||||
|
||||
return filterMissingAddressables(missingAddressables, since)
|
||||
return filterMissingAddressables(missingAddressables)
|
||||
}
|
||||
|
||||
fun filterMissingAddressables(
|
||||
missingAddressables: Set<Address>,
|
||||
since: Map<String, EOSETime>?,
|
||||
): List<TypedFilter>? {
|
||||
fun filterMissingAddressables(missingAddressables: Set<Address>): List<TypedFilter>? {
|
||||
if (missingAddressables.isEmpty()) return null
|
||||
|
||||
return missingAddressables.map { aTag ->
|
||||
|
||||
+4
-11
@@ -24,14 +24,10 @@ import com.vitorpamplona.amethyst.model.AddressableNote
|
||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.EventFinderQueryState
|
||||
import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES
|
||||
import com.vitorpamplona.ammolite.relays.TypedFilter
|
||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
||||
import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter
|
||||
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
|
||||
fun filterMissingEvents(
|
||||
keys: List<EventFinderQueryState>,
|
||||
since: Map<String, EOSETime>?,
|
||||
): List<TypedFilter>? {
|
||||
fun filterMissingEvents(keys: List<EventFinderQueryState>): List<TypedFilter>? {
|
||||
val missingEvents = mutableSetOf<String>()
|
||||
|
||||
keys.forEach {
|
||||
@@ -47,19 +43,16 @@ fun filterMissingEvents(
|
||||
}
|
||||
}
|
||||
|
||||
return filterMissingEvents(missingEvents, since)
|
||||
return filterMissingEvents(missingEvents)
|
||||
}
|
||||
|
||||
fun filterMissingEvents(
|
||||
missingEventIds: Set<HexKey>,
|
||||
since: Map<String, EOSETime>?,
|
||||
): List<TypedFilter>? {
|
||||
fun filterMissingEvents(missingEventIds: Set<HexKey>): List<TypedFilter>? {
|
||||
if (missingEventIds.isEmpty()) return null
|
||||
|
||||
return listOf(
|
||||
TypedFilter(
|
||||
types = EVENT_FINDER_TYPES,
|
||||
filter = SincePerRelayFilter(ids = missingEventIds.toList()),
|
||||
filter = SincePerRelayFilter(ids = missingEventIds.sorted()),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
+7
-10
@@ -20,22 +20,19 @@
|
||||
*/
|
||||
package com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.loaders
|
||||
|
||||
import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.SingleSubEoseManager
|
||||
import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.SingleSubNoEoseCacheEoseManager
|
||||
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.EventFinderQueryState
|
||||
import com.vitorpamplona.ammolite.relays.NostrClient
|
||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
||||
|
||||
class NoteEventLoaderSubAssembler(
|
||||
client: NostrClient,
|
||||
allKeys: () -> Set<EventFinderQueryState>,
|
||||
) : SingleSubEoseManager<EventFinderQueryState>(client, allKeys, invalidateAfterEose = true) {
|
||||
override fun updateFilter(
|
||||
keys: List<EventFinderQueryState>,
|
||||
since: Map<String, EOSETime>?,
|
||||
) = listOfNotNull(
|
||||
filterMissingEvents(keys, since),
|
||||
filterMissingAddressables(keys, since),
|
||||
).flatten()
|
||||
) : SingleSubNoEoseCacheEoseManager<EventFinderQueryState>(client, allKeys, invalidateAfterEose = true) {
|
||||
override fun updateFilter(keys: List<EventFinderQueryState>) =
|
||||
listOfNotNull(
|
||||
filterMissingEvents(keys),
|
||||
filterMissingAddressables(keys),
|
||||
).flatten()
|
||||
|
||||
override fun distinct(key: EventFinderQueryState) = key.note
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user