update follows when pressing follow all (#4663)

zio/stable
Hailey 2024-06-26 18:57:57 -07:00 committed by GitHub
parent 878b0476dd
commit 5641a4393c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 4 deletions

View File

@ -3,6 +3,7 @@ import {
AppBskyGraphGetFollows, AppBskyGraphGetFollows,
BskyAgent, BskyAgent,
} from '@atproto/api' } from '@atproto/api'
import {TID} from '@atproto/common-web'
import {until} from '#/lib/async/until' import {until} from '#/lib/async/until'
@ -20,9 +21,11 @@ export async function bulkWriteFollows(agent: BskyAgent, dids: string[]) {
createdAt: new Date().toISOString(), createdAt: new Date().toISOString(),
} }
}) })
const followWrites = followRecords.map(r => ({ const followWrites = followRecords.map(r => ({
$type: 'com.atproto.repo.applyWrites#create', $type: 'com.atproto.repo.applyWrites#create',
collection: 'app.bsky.graph.follow', collection: 'app.bsky.graph.follow',
rkey: TID.nextStr(),
value: r, value: r,
})) }))
@ -31,6 +34,15 @@ export async function bulkWriteFollows(agent: BskyAgent, dids: string[]) {
writes: followWrites, writes: followWrites,
}) })
await whenFollowsIndexed(agent, session.did, res => !!res.data.follows.length) await whenFollowsIndexed(agent, session.did, res => !!res.data.follows.length)
const followUris = new Map()
for (const r of followWrites) {
followUris.set(
r.value.subject,
`at://${session.did}/app.bsky.graph.follow/${r.rkey}`,
)
}
return followUris
} }
async function whenFollowsIndexed( async function whenFollowsIndexed(

View File

@ -23,14 +23,16 @@ import {
import {cleanError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger' import {logger} from '#/logger'
import {useDeleteStarterPackMutation} from '#/state/queries/starter-packs' import {useDeleteStarterPackMutation} from '#/state/queries/starter-packs'
import {batchedUpdates} from 'lib/batchedUpdates'
import {HITSLOP_20} from 'lib/constants' import {HITSLOP_20} from 'lib/constants'
import {makeProfileLink, makeStarterPackLink} from 'lib/routes/links' import {makeProfileLink, makeStarterPackLink} from 'lib/routes/links'
import {CommonNavigatorParams, NavigationProp} from 'lib/routes/types' import {CommonNavigatorParams, NavigationProp} from 'lib/routes/types'
import {logEvent} from 'lib/statsig/statsig' import {logEvent} from 'lib/statsig/statsig'
import {getStarterPackOgCard} from 'lib/strings/starter-pack' import {getStarterPackOgCard} from 'lib/strings/starter-pack'
import {isWeb} from 'platform/detection' import {isWeb} from 'platform/detection'
import {updateProfileShadow} from 'state/cache/profile-shadow'
import {useModerationOpts} from 'state/preferences/moderation-opts' import {useModerationOpts} from 'state/preferences/moderation-opts'
import {RQKEY, useListMembersQuery} from 'state/queries/list-members' import {useListMembersQuery} from 'state/queries/list-members'
import {useResolveDidQuery} from 'state/queries/resolve-uri' import {useResolveDidQuery} from 'state/queries/resolve-uri'
import {useShortenLink} from 'state/queries/shorten-link' import {useShortenLink} from 'state/queries/shorten-link'
import {useStarterPackQuery} from 'state/queries/starter-packs' import {useStarterPackQuery} from 'state/queries/starter-packs'
@ -275,10 +277,14 @@ function Header({
.filter(li => !li.subject.viewer?.following) .filter(li => !li.subject.viewer?.following)
.map(li => li.subject.did) .map(li => li.subject.did)
await bulkWriteFollows(agent, dids) const followUris = await bulkWriteFollows(agent, dids)
await queryClient.refetchQueries({ batchedUpdates(() => {
queryKey: RQKEY(starterPack.list.uri), for (let did of dids) {
updateProfileShadow(queryClient, did, {
followingUri: followUris.get(did),
})
}
}) })
logEvent('starterPack:followAll', { logEvent('starterPack:followAll', {