feat: optimize relay selection for reply fetching
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
|||||||
getReplaceableCoordinateFromEvent,
|
getReplaceableCoordinateFromEvent,
|
||||||
getRootTag,
|
getRootTag,
|
||||||
isMentioningMutedUsers,
|
isMentioningMutedUsers,
|
||||||
|
isProtectedEvent,
|
||||||
isReplaceableEvent,
|
isReplaceableEvent,
|
||||||
isReplyNoteEvent
|
isReplyNoteEvent
|
||||||
} from '@/lib/event'
|
} from '@/lib/event'
|
||||||
@@ -118,14 +119,13 @@ export default function ReplyNoteList({ index, event }: { index?: number; event:
|
|||||||
const relayList = await client.fetchRelayList(
|
const relayList = await client.fetchRelayList(
|
||||||
(rootInfo as { pubkey?: string }).pubkey ?? event.pubkey
|
(rootInfo as { pubkey?: string }).pubkey ?? event.pubkey
|
||||||
)
|
)
|
||||||
const relayUrls = relayList.read.concat(BIG_RELAY_URLS)
|
const relayUrls = relayList.read.concat(BIG_RELAY_URLS).slice(0, 4)
|
||||||
const seenOn =
|
|
||||||
rootInfo.type === 'E'
|
// If current event is protected, we can assume its replies are also protected and stored on the same relays
|
||||||
? client.getSeenEventRelayUrls(rootInfo.id)
|
if (isProtectedEvent(event)) {
|
||||||
: rootInfo.type === 'A'
|
const seenOn = client.getSeenEventRelayUrls(event.id)
|
||||||
? client.getSeenEventRelayUrls(rootInfo.eventId)
|
relayUrls.concat(...seenOn)
|
||||||
: []
|
}
|
||||||
relayUrls.unshift(...seenOn)
|
|
||||||
|
|
||||||
const filters: (Omit<Filter, 'since' | 'until'> & {
|
const filters: (Omit<Filter, 'since' | 'until'> & {
|
||||||
limit: number
|
limit: number
|
||||||
@@ -168,7 +168,7 @@ export default function ReplyNoteList({ index, event }: { index?: number; event:
|
|||||||
}
|
}
|
||||||
const { closer, timelineKey } = await client.subscribeTimeline(
|
const { closer, timelineKey } = await client.subscribeTimeline(
|
||||||
filters.map((filter) => ({
|
filters.map((filter) => ({
|
||||||
urls: relayUrls.slice(0, 5),
|
urls: relayUrls.slice(0, 8),
|
||||||
filter
|
filter
|
||||||
})),
|
})),
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user