bug: profile loading bugs

This commit is contained in:
2023-04-04 15:27:49 +01:00
parent 39dbfe1183
commit c515636616
4 changed files with 36 additions and 15 deletions

View File

@ -50,13 +50,16 @@ class ProfileLoaderService {
const sub = new RequestBuilder(`profiles`);
sub
.withOptions({
skipDiff: true,
})
.withFilter()
.kinds([EventKind.SetMetadata])
.authors([...missing]);
const q = System.Query<PubkeyReplaceableNoteStore>(PubkeyReplaceableNoteStore, sub);
// never release this callback, it will stop firing anyway after eose
const releaseOnEvent = q.onEvent(async ev => {
q.onEvent(async ev => {
for (const e of ev) {
const profile = mapEventToProfile(e);
if (profile) {
@ -70,8 +73,8 @@ class ProfileLoaderService {
if (!q.loading) {
clearTimeout(timeout);
resolve(q.getSnapshotData() ?? []);
release();
}
release();
});
timeout = setTimeout(() => {
release();
@ -79,7 +82,6 @@ class ProfileLoaderService {
}, 5_000);
});
releaseOnEvent();
const couldNotFetch = [...missing].filter(a => !results.some(b => b.pubkey === a));
if (couldNotFetch.length > 0) {
console.debug("No profiles: ", couldNotFetch);

View File

@ -35,6 +35,10 @@ export interface BuiltRawReqFilter {
export interface RequestBuilderOptions {
leaveOpen?: boolean;
relays?: Array<string>;
/**
* Do not apply diff logic and always use full filters for query
*/
skipDiff?: boolean;
}
/**

View File

@ -218,7 +218,7 @@ export class NostrSystem {
q.unCancel();
const diff = diffFilters(q.request.filters, filters);
if (!diff.changed) {
if (!diff.changed && !req.options?.skipDiff) {
this.#changed();
return unwrap(this.Feeds.get(req.id)) as Readonly<T>;
} else {