diff --git a/src/hooks/useSearchProfiles.tsx b/src/hooks/useSearchProfiles.tsx index 6fcfcf6..f930fff 100644 --- a/src/hooks/useSearchProfiles.tsx +++ b/src/hooks/useSearchProfiles.tsx @@ -43,7 +43,7 @@ export function useSearchProfiles(search: string, limit: number) { existingPubkeys.add(profile.pubkey) profiles.push(profile) }) - setProfiles(profiles) + setProfiles([...profiles]) } } catch (err) { setError(err as Error) diff --git a/src/services/client.service.ts b/src/services/client.service.ts index 769f26d..81ca37f 100644 --- a/src/services/client.service.ts +++ b/src/services/client.service.ts @@ -730,7 +730,8 @@ class ClientService extends EventTarget { }) const profileEvents = events.sort((a, b) => b.created_at - a.created_at) - await Promise.all(profileEvents.map((profile) => this.addUsernameToIndex(profile))) + await Promise.allSettled(profileEvents.map((profile) => this.addUsernameToIndex(profile))) + profileEvents.forEach((profile) => this.updateProfileEventCache(profile)) return profileEvents.map((profileEvent) => getProfileFromEvent(profileEvent)) } @@ -927,6 +928,11 @@ class ClientService extends EventTarget { indexedDb.putReplaceableEvent(event) } + updateProfileEventCache(event: NEvent) { + this.fetchProfileEventFromBigRelaysDataloader.clear(event.pubkey) + this.fetchProfileEventFromBigRelaysDataloader.prime(event.pubkey, Promise.resolve(event)) + } + async searchNpubsFromCache(query: string, limit: number = 100) { const result = await this.userIndex.searchAsync(query, { limit }) return result.map((pubkey) => pubkeyToNpub(pubkey as string)).filter(Boolean) as string[]