fix: resolve user search returning no results

This commit is contained in:
codytseng
2025-07-31 23:20:36 +08:00
parent 5107ce4b77
commit 63936589d8
2 changed files with 8 additions and 2 deletions

View File

@@ -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)

View File

@@ -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[]