Keep follow sync trickling

This commit is contained in:
nayan9617
2026-04-08 16:28:14 +05:30
parent 5cce03d2ec
commit 3929ca5eb5
+11 -4
View File
@@ -252,12 +252,15 @@ 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 // This isn't urgent, avoid clogging other stuff up
await sleep(1000) await sleep(1000)
if (signal.aborted) return
await Promise.all( await Promise.all(
pubkeys.flatMap(pk => [ pubkeys.flatMap(pk => [
loadRelayList(pk), loadRelayList(pk),
@@ -267,10 +270,11 @@ const syncUserData = () => {
loadMuteList(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()