fix: fetch profile event from user's write relays if not found in big relays
This commit is contained in:
@@ -817,7 +817,10 @@ class ClientService extends EventTarget {
|
|||||||
return event
|
return event
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.tryHarderToFetchEvent(relayUrls, { ids: [id], limit: 1 }, true)
|
return this.fetchEventFromRelays(
|
||||||
|
relayUrls.filter((url) => !BIG_RELAY_URLS.includes(url)),
|
||||||
|
{ ids: [id], limit: 1 }
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _fetchEvent(id: string): Promise<NEvent | undefined> {
|
private async _fetchEvent(id: string): Promise<NEvent | undefined> {
|
||||||
@@ -861,7 +864,7 @@ class ClientService extends EventTarget {
|
|||||||
|
|
||||||
if (!event && author) {
|
if (!event && author) {
|
||||||
const relayList = await this.fetchRelayList(author)
|
const relayList = await this.fetchRelayList(author)
|
||||||
event = await this.tryHarderToFetchEvent(relayList.write.slice(0, 5), filter)
|
event = await this.fetchEventFromRelays(relayList.write.slice(0, 5), filter)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event && event.id !== id) {
|
if (event && event.id !== id) {
|
||||||
@@ -871,19 +874,7 @@ class ClientService extends EventTarget {
|
|||||||
return event
|
return event
|
||||||
}
|
}
|
||||||
|
|
||||||
private async tryHarderToFetchEvent(
|
private async fetchEventFromRelays(relayUrls: string[], filter: Filter) {
|
||||||
relayUrls: string[],
|
|
||||||
filter: Filter,
|
|
||||||
alreadyFetchedFromBigRelays = false
|
|
||||||
) {
|
|
||||||
if (!relayUrls.length && filter.authors?.length) {
|
|
||||||
const relayList = await this.fetchRelayList(filter.authors[0])
|
|
||||||
relayUrls = alreadyFetchedFromBigRelays
|
|
||||||
? relayList.write.filter((url) => !BIG_RELAY_URLS.includes(url)).slice(0, 4)
|
|
||||||
: relayList.write.slice(0, 4)
|
|
||||||
} else if (!relayUrls.length && !alreadyFetchedFromBigRelays) {
|
|
||||||
relayUrls = BIG_RELAY_URLS
|
|
||||||
}
|
|
||||||
if (!relayUrls.length) return
|
if (!relayUrls.length) return
|
||||||
|
|
||||||
const events = await this.query(relayUrls, filter)
|
const events = await this.query(relayUrls, filter)
|
||||||
@@ -1054,18 +1045,19 @@ class ClientService extends EventTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!relays.length) {
|
if (!relays.length) {
|
||||||
return undefined
|
const relayList = await this.fetchRelayList(pubkey)
|
||||||
|
relays = relayList.write.filter((url) => !BIG_RELAY_URLS.includes(url)).slice(0, 5)
|
||||||
|
|
||||||
|
if (!relays.length) {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const profileEvent = await this.tryHarderToFetchEvent(
|
const profileEvent = await this.fetchEventFromRelays(relays, {
|
||||||
relays,
|
authors: [pubkey],
|
||||||
{
|
kinds: [kinds.Metadata],
|
||||||
authors: [pubkey],
|
limit: 1
|
||||||
kinds: [kinds.Metadata],
|
})
|
||||||
limit: 1
|
|
||||||
},
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
if (profileEvent) {
|
if (profileEvent) {
|
||||||
this.addUsernameToIndex(profileEvent)
|
this.addUsernameToIndex(profileEvent)
|
||||||
|
|||||||
Reference in New Issue
Block a user