add filter.not.ids = [alreadyHave] from memory
This commit is contained in:
parent
cc753d5708
commit
dee9a3de2c
@ -165,9 +165,18 @@ class IndexedDB extends Dexie {
|
||||
async find(filter: Filter, callback: (event: TaggedNostrEvent) => void): Promise<void> {
|
||||
if (!filter) return;
|
||||
|
||||
const filterString = JSON.stringify(filter);
|
||||
if (this.readQueue.has(filterString)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// make sure only 1 argument is passed
|
||||
const cb = e => {
|
||||
this.seenEvents.add(e.id);
|
||||
if (filter.not?.ids?.includes(e.id)) {
|
||||
console.log('skipping', e.id);
|
||||
return;
|
||||
}
|
||||
callback(e);
|
||||
};
|
||||
|
||||
@ -225,7 +234,6 @@ class IndexedDB extends Dexie {
|
||||
query = query.limit(filter.limit);
|
||||
}
|
||||
// TODO test that the sort is actually working
|
||||
const filterString = JSON.stringify(filter);
|
||||
this.enqueueRead(filterString, async () => {
|
||||
await query.each(cb);
|
||||
});
|
||||
|
@ -319,7 +319,17 @@ export class NostrSystem extends EventEmitter<NostrSystemEvents> implements Syst
|
||||
qSend.filters = fNew;
|
||||
|
||||
fNew.forEach(f => {
|
||||
inMemoryDB.find(f, e => this.HandleEvent(e));
|
||||
const alreadyHave = inMemoryDB.findArray(f).map(e => {
|
||||
console.log('got from inMemoryDB', e);
|
||||
this.HandleEvent(e);
|
||||
return e.id;
|
||||
});
|
||||
f.not = f.not ?? {};
|
||||
if (f.not.ids) {
|
||||
f.not.ids.push(...alreadyHave);
|
||||
} else {
|
||||
f.not.ids = alreadyHave;
|
||||
}
|
||||
this.emit("request", f);
|
||||
});
|
||||
|
||||
|
@ -57,6 +57,7 @@ export interface ReqFilter {
|
||||
since?: number;
|
||||
until?: number;
|
||||
limit?: number;
|
||||
not?: ReqFilter;
|
||||
[key: string]: Array<string> | Array<number> | string | number | undefined;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user