mirror of
https://github.com/dergigi/boris.git
synced 2025-12-24 01:54:19 +01:00
fix(article): add reliable-relay fallback (nostr.band, primal, damus, nos.lol) when first parallel query returns no events
This commit is contained in:
@@ -114,7 +114,28 @@ export async function fetchArticleByNaddr(
|
|||||||
// Parallel local+remote, stream immediate, collect up to first from each
|
// Parallel local+remote, stream immediate, collect up to first from each
|
||||||
const { local$, remote$ } = createParallelReqStreams(relayPool, localRelays, remoteRelays, filter, 1200, 6000)
|
const { local$, remote$ } = createParallelReqStreams(relayPool, localRelays, remoteRelays, filter, 1200, 6000)
|
||||||
const collected = await lastValueFrom(merge(local$.pipe(take(1)), remote$.pipe(take(1))).pipe(rxToArray()))
|
const collected = await lastValueFrom(merge(local$.pipe(take(1)), remote$.pipe(take(1))).pipe(rxToArray()))
|
||||||
const events = collected as NostrEvent[]
|
let events = collected as NostrEvent[]
|
||||||
|
|
||||||
|
// Fallback: if nothing found, try a second round against a set of reliable public relays
|
||||||
|
if (events.length === 0) {
|
||||||
|
const reliableRelays = Array.from(new Set<string>([
|
||||||
|
'wss://relay.nostr.band',
|
||||||
|
'wss://relay.primal.net',
|
||||||
|
'wss://relay.damus.io',
|
||||||
|
'wss://nos.lol',
|
||||||
|
...remoteRelays // keep any configured remote relays
|
||||||
|
]))
|
||||||
|
const { remote$: fallback$ } = createParallelReqStreams(
|
||||||
|
relayPool,
|
||||||
|
[], // no local
|
||||||
|
reliableRelays,
|
||||||
|
filter,
|
||||||
|
1500,
|
||||||
|
12000
|
||||||
|
)
|
||||||
|
const fallbackCollected = await lastValueFrom(fallback$.pipe(take(1), rxToArray()))
|
||||||
|
events = fallbackCollected as NostrEvent[]
|
||||||
|
}
|
||||||
|
|
||||||
if (events.length === 0) {
|
if (events.length === 0) {
|
||||||
throw new Error('Article not found')
|
throw new Error('Article not found')
|
||||||
|
|||||||
Reference in New Issue
Block a user