feat: improve search results for profiles

This commit is contained in:
codytseng
2025-05-25 21:42:34 +08:00
parent 25b465e62a
commit 34c8c06ce9
3 changed files with 23 additions and 4 deletions

View File

@@ -833,11 +833,17 @@ class ClientService extends EventTarget {
this.relayListEventDataLoader.prime(event.pubkey, Promise.resolve(event))
}
async searchNpubs(query: string, limit: number = 100) {
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[]
}
async searchProfilesFromCache(query: string, limit: number = 100) {
const npubs = await this.searchNpubsFromCache(query, limit)
const profiles = await Promise.all(npubs.map((npub) => this.fetchProfile(npub)))
return profiles.filter((profile) => !!profile) as TProfile[]
}
async initUserIndexFromFollowings(pubkey: string, signal: AbortSignal) {
const followings = await this.fetchFollowings(pubkey, true)
for (let i = 0; i * 20 < followings.length; i++) {