migrate the age assurance data reads to the session clients
getOtherRequiredData's getPreferences read moves onto the sdk action, which also unblocks fetchActorDeclarationRecord - its only caller - so the record read moves to the pds client too. The prefetch and refetch entry points now take the transport they need rather than an agent: the appview client for getState and device signals, the account client for preferences and the declaration record. The session bundle still carries only an agent, so the three session call sites derive both clients from it; the full bundle rework is a later slice. The standalone config read stays on its own unauthenticated agent.
This commit is contained in:
@@ -1,15 +1,12 @@
|
||||
import type AtpAgent from '@atproto/api'
|
||||
import {
|
||||
type AppBskyActorDefs,
|
||||
type ChatBskyActorDeclaration,
|
||||
} from '@atproto/api'
|
||||
import {type AppBskyActorDefs} from '@atproto/api'
|
||||
import {type Client} from '@atproto/lex'
|
||||
import {type DidString} from '@atproto/syntax'
|
||||
import {useMutation, useQueryClient} from '@tanstack/react-query'
|
||||
|
||||
import {logger} from '#/logger'
|
||||
import {usePdsClient, useSession} from '#/state/session'
|
||||
import {resolveAllowGroupInvites} from '#/components/dms/util'
|
||||
import {com} from '#/lexicons'
|
||||
import {chat, com} from '#/lexicons'
|
||||
import {RQKEY as PROFILE_RKEY} from '../profile'
|
||||
|
||||
export function useUpdateActorDeclaration({
|
||||
@@ -119,25 +116,16 @@ export function useDeleteActorDeclaration() {
|
||||
})
|
||||
}
|
||||
|
||||
/*
|
||||
* Still takes the legacy agent: its only caller is `getOtherRequiredData` in
|
||||
* `#/ageAssurance/data`, which is blocked on `getPreferences` and so cannot
|
||||
* hand over a lex client yet.
|
||||
*/
|
||||
export async function fetchActorDeclarationRecord({
|
||||
agent,
|
||||
client,
|
||||
did,
|
||||
}: {
|
||||
agent: AtpAgent
|
||||
client: Client
|
||||
did?: string
|
||||
}) {
|
||||
if (!did) return
|
||||
const res = await agent.com.atproto.repo
|
||||
.getRecord({
|
||||
repo: did,
|
||||
collection: 'chat.bsky.actor.declaration',
|
||||
rkey: 'self',
|
||||
})
|
||||
const res = await client
|
||||
.get(chat.bsky.actor.declaration, {repo: did as DidString, rkey: 'self'})
|
||||
.catch(_e => undefined)
|
||||
return res?.data.value as ChatBskyActorDeclaration.Main
|
||||
return res?.value
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import {
|
||||
import {unsafeGetAndComputeAgeAssurance} from '#/ageAssurance/state'
|
||||
import {features} from '#/analytics'
|
||||
import {type app} from '#/lexicons'
|
||||
import {agentToPdsClient} from './clients'
|
||||
import {agentToAppviewClient, agentToPdsClient} from './clients'
|
||||
import {configureModerationForAccount} from './moderation'
|
||||
import {
|
||||
buildBundle,
|
||||
@@ -105,12 +105,15 @@ export async function createSessionBundleAndCreateAccount(
|
||||
setCreatedAtForDid({did: earlyAccount.did, createdAt})
|
||||
setBirthdateForDid({did: earlyAccount.did, birthdate})
|
||||
snoozeBirthdateUpdateAllowedForDid(earlyAccount.did)
|
||||
// Start the prefetch after seeding its synchronous birthdate inputs.
|
||||
const aa = prefetchAgeAssuranceServerData({agent: bundle.agent})
|
||||
|
||||
const isProd = Boolean(IS_PROD_SERVICE(service))
|
||||
// Post-signup writes all target the account's own repo and actor store.
|
||||
const pdsClient = agentToPdsClient(bundle.agent)
|
||||
// Start the prefetch after seeding its synchronous birthdate inputs.
|
||||
const aa = prefetchAgeAssuranceServerData({
|
||||
appviewClient: agentToAppviewClient(bundle.agent),
|
||||
accountClient: pdsClient,
|
||||
})
|
||||
|
||||
const isProd = Boolean(IS_PROD_SERVICE(service))
|
||||
const postSignupTasks: Promise<unknown>[] = [
|
||||
savePersonalDetails(pdsClient, birthDate),
|
||||
initializeProfile(pdsClient, {handle, createdAt, isProd}),
|
||||
|
||||
@@ -13,6 +13,7 @@ import {
|
||||
createPublicAgent,
|
||||
PasswordSessionManager,
|
||||
} from './bridge-agent'
|
||||
import {agentToAppviewClient, agentToPdsClient} from './clients'
|
||||
import {addSessionErrorLog} from './logging'
|
||||
import {configureModerationForAccount} from './moderation'
|
||||
import {networkAwareFetch} from './network'
|
||||
@@ -290,7 +291,10 @@ export async function createSessionBundleAndResume(
|
||||
) ?? storedAccount
|
||||
|
||||
configureModerationForAccount(bundle.agent, earlyAccount)
|
||||
const aa = prefetchAgeAssuranceServerData({agent: bundle.agent})
|
||||
const aa = prefetchAgeAssuranceServerData({
|
||||
appviewClient: agentToAppviewClient(bundle.agent),
|
||||
accountClient: agentToPdsClient(bundle.agent),
|
||||
})
|
||||
|
||||
/*
|
||||
* The proxy header is applied after the PDS-targeting setup above, so those
|
||||
@@ -355,7 +359,10 @@ export async function createSessionBundleAndLogin(
|
||||
|
||||
const gates = features.refresh({strategy: 'prefer-fresh-gates'})
|
||||
configureModerationForAccount(bundle.agent, earlyAccount)
|
||||
const aa = prefetchAgeAssuranceServerData({agent: bundle.agent})
|
||||
const aa = prefetchAgeAssuranceServerData({
|
||||
appviewClient: agentToAppviewClient(bundle.agent),
|
||||
accountClient: agentToPdsClient(bundle.agent),
|
||||
})
|
||||
|
||||
bundle.agent.configureProxy(BLUESKY_PROXY_HEADER.get())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user