From eb6c017319976e432e983adc0ebc0167556f9a41 Mon Sep 17 00:00:00 2001 From: codytseng Date: Mon, 29 Dec 2025 23:14:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/NotificationList/index.tsx | 8 ++++---- src/providers/NotificationProvider.tsx | 5 +++-- src/services/client.service.ts | 16 ++++++++++------ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/components/NotificationList/index.tsx b/src/components/NotificationList/index.tsx index 5f8911c..dd9f0d4 100644 --- a/src/components/NotificationList/index.tsx +++ b/src/components/NotificationList/index.tsx @@ -166,18 +166,18 @@ const NotificationList = forwardRef((_, ref) => { if (!active || !pubkey) return const handler = (data: Event) => { - const customEvent = data as CustomEvent - const evt = customEvent.detail + const customEvent = data as CustomEvent<{ event: NostrEvent; relays: string[] }> + const { event } = customEvent.detail if ( matchFilter( { kinds: filterKinds, '#p': [pubkey] }, - evt + event ) ) { - handleNewEvent(evt) + handleNewEvent(event) } } diff --git a/src/providers/NotificationProvider.tsx b/src/providers/NotificationProvider.tsx index 59770b0..a6758db 100644 --- a/src/providers/NotificationProvider.tsx +++ b/src/providers/NotificationProvider.tsx @@ -98,8 +98,9 @@ export function NotificationProvider({ children }: { children: React.ReactNode } try { let eosed = false const relayList = await client.fetchRelayList(pubkey) + const relays = relayList.read.length > 0 ? relayList.read.slice(0, 5) : BIG_RELAY_URLS const subCloser = client.subscribe( - relayList.read.length > 0 ? relayList.read.slice(0, 5) : BIG_RELAY_URLS, + relays, [ { kinds: [ @@ -135,7 +136,7 @@ export function NotificationProvider({ children }: { children: React.ReactNode } return prev } - client.emitNewEvent(evt) + client.emitNewEvent(evt, relays) return [evt, ...prev] }) } diff --git a/src/services/client.service.ts b/src/services/client.service.ts index 2612339..b728a5c 100644 --- a/src/services/client.service.ts +++ b/src/services/client.service.ts @@ -178,7 +178,7 @@ class ClientService extends EventTarget { const checkCompletion = () => { if (successCount >= successThreshold) { - this.emitNewEvent(event) + this.emitNewEvent(event, uniqueRelayUrls) resolve() } if (++finishedCount >= uniqueRelayUrls.length) { @@ -240,8 +240,8 @@ class ClientService extends EventTarget { }) } - emitNewEvent(event: NEvent) { - this.dispatchEvent(new CustomEvent('newEvent', { detail: event })) + emitNewEvent(event: NEvent, relays: string[] = []) { + this.dispatchEvent(new CustomEvent('newEvent', { detail: { event, relays } })) } async signHttpAuth(url: string, method: string, description = '') { @@ -531,9 +531,13 @@ class ClientService extends EventTarget { }) const handleNewEventFromInternal = (data: Event) => { - const customEvent = data as CustomEvent - const evt = customEvent.detail - if (!matchFilters(filters, evt)) return + const customEvent = data as CustomEvent<{ event: NEvent; relays: string[] }> + const { event: evt, relays: _relays } = customEvent.detail + if (!_relays.some((url) => relays.includes(url))) { + return + } + const _filters = filters.filter((f) => !f.search) + if (_filters.length === 0 || !matchFilters(_filters, evt)) return const id = evt.id const have = _knownIds.has(id)