update follows when pressing follow all (#4663)
parent
878b0476dd
commit
5641a4393c
|
@ -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(
|
||||||
|
|
|
@ -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', {
|
||||||
|
|
Loading…
Reference in New Issue