send not filter to relays that support nip-113
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Martti Malmi 2024-01-05 14:01:34 +02:00
parent aa938034c5
commit 3a2facd899
3 changed files with 16 additions and 6 deletions

View File

@ -1,3 +1,4 @@
export enum Nips {
Search = 50,
NotFilter = 113,
}

View File

@ -324,16 +324,15 @@ export class NostrSystem extends EventEmitter<NostrSystemEvents> implements Syst
this.HandleEvent(e);
return e.id;
});
let fCopy = { ...f }; // some relays reject the query if it contains an unknown key. only send locally.
if (alreadyHave.length) {
fCopy.not = fCopy.not ?? {};
if (fCopy.not.ids) {
fCopy.not.ids.push(...alreadyHave);
f.not = f.not ?? {};
if (f.not.ids) {
f.not.ids.push(...alreadyHave);
} else {
fCopy.not.ids = alreadyHave;
f.not.ids = alreadyHave;
}
}
this.emit("request", fCopy);
this.emit("request", f);
});
if (qSend.relay) {

View File

@ -321,6 +321,16 @@ export class Query extends EventEmitter<QueryEvents> implements QueryBase {
}
#sendQueryInternal(c: Connection, q: BuiltRawReqFilter) {
if (!c.SupportsNip(Nips.NotFilter)) {
q.filters = q.filters.map(f => {
if (f.not) {
const copy = { ...f };
delete copy.not;
return copy;
}
return f;
});
}
const qt = new QueryTrace(c.Address, q.filters, c.Id);
qt.on("close", x => c.CloseReq(x));
qt.on("change", () => this.#onProgress());