From d06d6afbf700518b9ccb2754219e0bbafe2f866e Mon Sep 17 00:00:00 2001 From: Kieran Date: Sat, 19 Aug 2023 23:59:25 +0100 Subject: [PATCH] Test events match filter --- packages/system/src/query.ts | 7 ++++++- packages/system/src/request-matcher.ts | 18 +++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/system/src/query.ts b/packages/system/src/query.ts index 8fc51634..bd45ad03 100644 --- a/packages/system/src/query.ts +++ b/packages/system/src/query.ts @@ -7,6 +7,7 @@ import { NoteStore } from "./note-collection"; import { flatMerge } from "./request-merger"; import { BuiltRawReqFilter } from "./request-builder"; import { FlatReqFilter, expandFilter } from "./request-expander"; +import { eventMatchesFilter } from "./request-matcher"; /** * Tracing for relay query status @@ -179,7 +180,11 @@ export class Query implements QueryBase { onEvent(sub: string, e: TaggedNostrEvent) { for (const t of this.#tracing) { if (t.id === sub) { - this.feed.add(e); + if(t.filters.some(v => eventMatchesFilter(e, v))) { + this.feed.add(e); + } else { + this.#log("Event did not match filter, rejecting %O", e); + } break; } } diff --git a/packages/system/src/request-matcher.ts b/packages/system/src/request-matcher.ts index d6e0ab1b..bd04793b 100644 --- a/packages/system/src/request-matcher.ts +++ b/packages/system/src/request-matcher.ts @@ -1,20 +1,20 @@ import { NostrEvent, ReqFilter } from "./nostr"; export function eventMatchesFilter(ev: NostrEvent, filter: ReqFilter) { - if (!(filter.ids?.includes(ev.id) ?? false)) { - return false; - } - if (!(filter.authors?.includes(ev.pubkey) ?? false)) { - return false; - } - if (!(filter.kinds?.includes(ev.kind) ?? false)) { - return false; - } if (filter.since && ev.created_at < filter.since) { return false; } if (filter.until && ev.created_at > filter.until) { return false; } + if (!(filter.ids?.includes(ev.id) ?? true)) { + return false; + } + if (!(filter.authors?.includes(ev.pubkey) ?? true)) { + return false; + } + if (!(filter.kinds?.includes(ev.kind) ?? true)) { + return false; + } return true; }