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
|
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.amethyst.service.relayClient.reqCommand.channel.ChannelFinderQueryState
|
||||||
import com.vitorpamplona.ammolite.relays.NostrClient
|
import com.vitorpamplona.ammolite.relays.NostrClient
|
||||||
import com.vitorpamplona.ammolite.relays.TypedFilter
|
import com.vitorpamplona.ammolite.relays.TypedFilter
|
||||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This assembler observes loads missing public chats when needed.
|
* This assembler observes loads missing public chats when needed.
|
||||||
@@ -38,11 +37,8 @@ import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
|||||||
class ChannelLoaderSubAssembler(
|
class ChannelLoaderSubAssembler(
|
||||||
client: NostrClient,
|
client: NostrClient,
|
||||||
allKeys: () -> Set<ChannelFinderQueryState>,
|
allKeys: () -> Set<ChannelFinderQueryState>,
|
||||||
) : SingleSubEoseManager<ChannelFinderQueryState>(client, allKeys, invalidateAfterEose = true) {
|
) : SingleSubNoEoseCacheEoseManager<ChannelFinderQueryState>(client, allKeys, invalidateAfterEose = true) {
|
||||||
override fun updateFilter(
|
override fun updateFilter(keys: List<ChannelFinderQueryState>): List<TypedFilter>? = filterMissingChannelsById(keys)
|
||||||
keys: List<ChannelFinderQueryState>,
|
|
||||||
since: Map<String, EOSETime>?,
|
|
||||||
): List<TypedFilter>? = filterMissingChannelsById(keys, since)
|
|
||||||
|
|
||||||
override fun distinct(key: ChannelFinderQueryState) = key.channel.idHex
|
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.amethyst.service.relayClient.reqCommand.channel.ChannelFinderQueryState
|
||||||
import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES
|
import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES
|
||||||
import com.vitorpamplona.ammolite.relays.TypedFilter
|
import com.vitorpamplona.ammolite.relays.TypedFilter
|
||||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
|
||||||
import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter
|
import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter
|
||||||
import com.vitorpamplona.quartz.nip28PublicChat.admin.ChannelCreateEvent
|
import com.vitorpamplona.quartz.nip28PublicChat.admin.ChannelCreateEvent
|
||||||
|
|
||||||
fun filterMissingChannelsById(
|
fun filterMissingChannelsById(keys: List<ChannelFinderQueryState>): List<TypedFilter>? {
|
||||||
keys: List<ChannelFinderQueryState>,
|
|
||||||
since: Map<String, EOSETime>?,
|
|
||||||
): List<TypedFilter>? {
|
|
||||||
val firstTimers =
|
val firstTimers =
|
||||||
keys.mapNotNullTo(mutableSetOf()) {
|
keys.mapNotNullTo(mutableSetOf()) {
|
||||||
if (it.channel is PublicChatChannel && it.channel.event == null) {
|
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.amethyst.service.relayClient.reqCommand.event.EventFinderQueryState
|
||||||
import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES
|
import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES
|
||||||
import com.vitorpamplona.ammolite.relays.TypedFilter
|
import com.vitorpamplona.ammolite.relays.TypedFilter
|
||||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
|
||||||
import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter
|
import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter
|
||||||
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
||||||
|
|
||||||
fun filterMissingAddressables(
|
fun filterMissingAddressables(keys: List<EventFinderQueryState>): List<TypedFilter>? {
|
||||||
keys: List<EventFinderQueryState>,
|
|
||||||
since: Map<String, EOSETime>?,
|
|
||||||
): List<TypedFilter>? {
|
|
||||||
val missingAddressables = mutableSetOf<Address>()
|
val missingAddressables = mutableSetOf<Address>()
|
||||||
|
|
||||||
keys.forEach {
|
keys.forEach {
|
||||||
@@ -47,13 +43,10 @@ fun filterMissingAddressables(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return filterMissingAddressables(missingAddressables, since)
|
return filterMissingAddressables(missingAddressables)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun filterMissingAddressables(
|
fun filterMissingAddressables(missingAddressables: Set<Address>): List<TypedFilter>? {
|
||||||
missingAddressables: Set<Address>,
|
|
||||||
since: Map<String, EOSETime>?,
|
|
||||||
): List<TypedFilter>? {
|
|
||||||
if (missingAddressables.isEmpty()) return null
|
if (missingAddressables.isEmpty()) return null
|
||||||
|
|
||||||
return missingAddressables.map { aTag ->
|
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.amethyst.service.relayClient.reqCommand.event.EventFinderQueryState
|
||||||
import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES
|
import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES
|
||||||
import com.vitorpamplona.ammolite.relays.TypedFilter
|
import com.vitorpamplona.ammolite.relays.TypedFilter
|
||||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
|
||||||
import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter
|
import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||||
|
|
||||||
fun filterMissingEvents(
|
fun filterMissingEvents(keys: List<EventFinderQueryState>): List<TypedFilter>? {
|
||||||
keys: List<EventFinderQueryState>,
|
|
||||||
since: Map<String, EOSETime>?,
|
|
||||||
): List<TypedFilter>? {
|
|
||||||
val missingEvents = mutableSetOf<String>()
|
val missingEvents = mutableSetOf<String>()
|
||||||
|
|
||||||
keys.forEach {
|
keys.forEach {
|
||||||
@@ -47,19 +43,16 @@ fun filterMissingEvents(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return filterMissingEvents(missingEvents, since)
|
return filterMissingEvents(missingEvents)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun filterMissingEvents(
|
fun filterMissingEvents(missingEventIds: Set<HexKey>): List<TypedFilter>? {
|
||||||
missingEventIds: Set<HexKey>,
|
|
||||||
since: Map<String, EOSETime>?,
|
|
||||||
): List<TypedFilter>? {
|
|
||||||
if (missingEventIds.isEmpty()) return null
|
if (missingEventIds.isEmpty()) return null
|
||||||
|
|
||||||
return listOf(
|
return listOf(
|
||||||
TypedFilter(
|
TypedFilter(
|
||||||
types = EVENT_FINDER_TYPES,
|
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
|
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.amethyst.service.relayClient.reqCommand.event.EventFinderQueryState
|
||||||
import com.vitorpamplona.ammolite.relays.NostrClient
|
import com.vitorpamplona.ammolite.relays.NostrClient
|
||||||
import com.vitorpamplona.ammolite.relays.filters.EOSETime
|
|
||||||
|
|
||||||
class NoteEventLoaderSubAssembler(
|
class NoteEventLoaderSubAssembler(
|
||||||
client: NostrClient,
|
client: NostrClient,
|
||||||
allKeys: () -> Set<EventFinderQueryState>,
|
allKeys: () -> Set<EventFinderQueryState>,
|
||||||
) : SingleSubEoseManager<EventFinderQueryState>(client, allKeys, invalidateAfterEose = true) {
|
) : SingleSubNoEoseCacheEoseManager<EventFinderQueryState>(client, allKeys, invalidateAfterEose = true) {
|
||||||
override fun updateFilter(
|
override fun updateFilter(keys: List<EventFinderQueryState>) =
|
||||||
keys: List<EventFinderQueryState>,
|
listOfNotNull(
|
||||||
since: Map<String, EOSETime>?,
|
filterMissingEvents(keys),
|
||||||
) = listOfNotNull(
|
filterMissingAddressables(keys),
|
||||||
filterMissingEvents(keys, since),
|
).flatten()
|
||||||
filterMissingAddressables(keys, since),
|
|
||||||
).flatten()
|
|
||||||
|
|
||||||
override fun distinct(key: EventFinderQueryState) = key.note
|
override fun distinct(key: EventFinderQueryState) = key.note
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user