From 481d6a1447acbdab355632258923555ec11a6ef8 Mon Sep 17 00:00:00 2001 From: codytseng Date: Wed, 20 Aug 2025 21:35:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=92=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/client.service.ts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/services/client.service.ts b/src/services/client.service.ts index b352c085..f7f85f53 100644 --- a/src/services/client.service.ts +++ b/src/services/client.service.ts @@ -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 { @@ -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