Keep follow sync trickling

This commit is contained in:
nayan9617
2026-04-08 16:28:14 +05:30
parent 5cce03d2ec
commit 3929ca5eb5
+22 -15
View File
@@ -252,25 +252,29 @@ const syncUserData = () => {
loadFeedsForPubkey(pubkey) loadFeedsForPubkey(pubkey)
} }
const syncFollowList = () => { const syncFollowList = async (signal: AbortSignal) => {
for (const pubkeys of chunk(10, get(bootstrapPubkeys))) { for (const pubkeys of chunk(10, get(bootstrapPubkeys))) {
void (async () => { if (signal.aborted) return
// This isn't urgent, avoid clogging other stuff up
await sleep(1000)
await Promise.all( // This isn't urgent, avoid clogging other stuff up
pubkeys.flatMap(pk => [ await sleep(1000)
loadRelayList(pk),
loadGroupList(pk), if (signal.aborted) return
loadProfile(pk),
loadFollowList(pk), await Promise.all(
loadMuteList(pk), pubkeys.flatMap(pk => [
]), loadRelayList(pk),
) loadGroupList(pk),
})() loadProfile(pk),
loadFollowList(pk),
loadMuteList(pk),
]),
)
} }
} }
let bootstrapFollowController = new AbortController()
const unsubscribeGroupList = merged([userGroupList]).subscribe(([$userGroupList]) => { const unsubscribeGroupList = merged([userGroupList]).subscribe(([$userGroupList]) => {
syncGroupList($userGroupList) syncGroupList($userGroupList)
}) })
@@ -280,10 +284,13 @@ const syncUserData = () => {
}) })
const unsubscribeFollows = merged([userFollowList]).subscribe(() => { const unsubscribeFollows = merged([userFollowList]).subscribe(() => {
syncFollowList() bootstrapFollowController.abort()
bootstrapFollowController = new AbortController()
void syncFollowList(bootstrapFollowController.signal)
}) })
return () => { return () => {
bootstrapFollowController.abort()
unsubscribersByKey.forEach(call) unsubscribersByKey.forEach(call)
unsubscribeGroupList() unsubscribeGroupList()
unsubscribeRelayList() unsubscribeRelayList()