feat: cache not found relay lists to avoid redundant queries

This commit is contained in:
codytseng
2025-05-24 20:42:46 +08:00
parent 7552499a76
commit ffdc6fd0c8
2 changed files with 53 additions and 8 deletions

View File

@@ -723,7 +723,7 @@ class ClientService extends EventTarget {
const relayEvents = await indexedDb.getManyReplaceableEvents(pubkeys, kinds.RelayList)
const nonExistingPubkeyIndexMap = new Map<string, number>()
pubkeys.forEach((pubkey, i) => {
if (!relayEvents[i]) {
if (relayEvents[i] === undefined) {
nonExistingPubkeyIndexMap.set(pubkey, i)
}
})
@@ -1024,7 +1024,14 @@ class ClientService extends EventTarget {
eventsMap.set(pubkey, event)
}
}
Array.from(eventsMap.values()).forEach((evt) => indexedDb.putReplaceableEvent(evt))
pubkeys.forEach((pubkey) => {
const event = eventsMap.get(pubkey)
if (event) {
indexedDb.putReplaceableEvent(event)
} else {
indexedDb.putNullReplaceableEvent(pubkey, kinds.RelayList)
}
})
return pubkeys.map((pubkey) => eventsMap.get(pubkey))
}