feat: 💨
This commit is contained in:
@@ -445,14 +445,7 @@ class ClientService extends EventTarget {
|
|||||||
const subCloser = this.subscribe(relays, since ? { ...filter, since } : filter, {
|
const subCloser = this.subscribe(relays, since ? { ...filter, since } : filter, {
|
||||||
startLogin,
|
startLogin,
|
||||||
onevent: (evt: NEvent) => {
|
onevent: (evt: NEvent) => {
|
||||||
that.eventDataLoader.prime(evt.id, Promise.resolve(evt))
|
that.addEventToCache(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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// not eosed yet, push to events
|
// not eosed yet, push to events
|
||||||
if (!eosedAt) {
|
if (!eosedAt) {
|
||||||
return events.push(evt)
|
return events.push(evt)
|
||||||
@@ -560,7 +553,7 @@ class ClientService extends EventTarget {
|
|||||||
limit = limit - cachedEvents.length
|
limit = limit - cachedEvents.length
|
||||||
let events = await this.query(urls, { ...filter, until, limit })
|
let events = await this.query(urls, { ...filter, until, limit })
|
||||||
events.forEach((evt) => {
|
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)
|
events = events.sort((a, b) => b.created_at - a.created_at).slice(0, limit)
|
||||||
|
|
||||||
@@ -641,7 +634,7 @@ class ClientService extends EventTarget {
|
|||||||
)
|
)
|
||||||
if (cache) {
|
if (cache) {
|
||||||
events.forEach((evt) => {
|
events.forEach((evt) => {
|
||||||
this.eventDataLoader.prime(evt.id, Promise.resolve(evt))
|
this.addEventToCache(evt)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return events
|
return events
|
||||||
@@ -680,6 +673,13 @@ class ClientService extends EventTarget {
|
|||||||
|
|
||||||
addEventToCache(event: NEvent) {
|
addEventToCache(event: NEvent) {
|
||||||
this.eventDataLoader.prime(event.id, Promise.resolve(event))
|
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> {
|
private async fetchEventById(relayUrls: string[], id: string): Promise<NEvent | undefined> {
|
||||||
@@ -737,7 +737,7 @@ class ClientService extends EventTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (event && event.id !== id) {
|
if (event && event.id !== id) {
|
||||||
this.eventDataLoader.prime(event.id, Promise.resolve(event))
|
this.addEventToCache(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
return event
|
return event
|
||||||
|
|||||||
Reference in New Issue
Block a user