feat: 💨

This commit is contained in:
codytseng
2025-08-20 21:35:57 +08:00
parent f8735348b5
commit 481d6a1447

View File

@@ -445,14 +445,7 @@ class ClientService extends EventTarget {
const subCloser = this.subscribe(relays, since ? { ...filter, since } : filter, {
startLogin,
onevent: (evt: NEvent) => {
that.eventDataLoader.prime(evt.id, Promise.resolve(evt))
if (isReplaceableEvent(evt.kind)) {
const coordinate = getReplaceableCoordinateFromEvent(evt)
const cachedEvent = that.replaceableEventCacheMap.get(coordinate)
if (!cachedEvent || compareEvents(evt, cachedEvent) > 0) {
that.replaceableEventCacheMap.set(coordinate, evt)
}
}
that.addEventToCache(evt)
// not eosed yet, push to events
if (!eosedAt) {
return events.push(evt)
@@ -560,7 +553,7 @@ class ClientService extends EventTarget {
limit = limit - cachedEvents.length
let events = await this.query(urls, { ...filter, until, limit })
events.forEach((evt) => {
this.eventDataLoader.prime(evt.id, Promise.resolve(evt))
this.addEventToCache(evt)
})
events = events.sort((a, b) => b.created_at - a.created_at).slice(0, limit)
@@ -641,7 +634,7 @@ class ClientService extends EventTarget {
)
if (cache) {
events.forEach((evt) => {
this.eventDataLoader.prime(evt.id, Promise.resolve(evt))
this.addEventToCache(evt)
})
}
return events
@@ -680,6 +673,13 @@ class ClientService extends EventTarget {
addEventToCache(event: NEvent) {
this.eventDataLoader.prime(event.id, Promise.resolve(event))
if (isReplaceableEvent(event.kind)) {
const coordinate = getReplaceableCoordinateFromEvent(event)
const cachedEvent = this.replaceableEventCacheMap.get(coordinate)
if (!cachedEvent || compareEvents(event, cachedEvent) > 0) {
this.replaceableEventCacheMap.set(coordinate, event)
}
}
}
private async fetchEventById(relayUrls: string[], id: string): Promise<NEvent | undefined> {
@@ -737,7 +737,7 @@ class ClientService extends EventTarget {
}
if (event && event.id !== id) {
this.eventDataLoader.prime(event.id, Promise.resolve(event))
this.addEventToCache(event)
}
return event