prefetch account list

This commit is contained in:
Samuel Newman
2025-11-10 19:14:44 +02:00
parent be2226d079
commit b90bab73bc
+23 -4
View File
@@ -1,11 +1,15 @@
import React from 'react' import {useCallback, useEffect, useState} from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {useSafeAreaInsets} from 'react-native-safe-area-context' import {useSafeAreaInsets} from 'react-native-safe-area-context'
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
import {PressableScale} from '#/lib/custom-animations/PressableScale' import {PressableScale} from '#/lib/custom-animations/PressableScale'
import {logEvent} from '#/lib/statsig/statsig' import {logEvent} from '#/lib/statsig/statsig'
import {STALE} from '#/state/queries'
import {profilesQueryKey} from '#/state/queries/profile'
import {useAgent, useSession} from '#/state/session'
import { import {
useLoggedOutView, useLoggedOutView,
useLoggedOutViewControls, useLoggedOutViewControls,
@@ -34,7 +38,7 @@ export function LoggedOut({onDismiss}: {onDismiss?: () => void}) {
const insets = useSafeAreaInsets() const insets = useSafeAreaInsets()
const setMinimalShellMode = useSetMinimalShellMode() const setMinimalShellMode = useSetMinimalShellMode()
const {requestedAccountSwitchTo} = useLoggedOutView() const {requestedAccountSwitchTo} = useLoggedOutView()
const [screenState, setScreenState] = React.useState<ScreenState>(() => { const [screenState, setScreenState] = useState<ScreenState>(() => {
if (requestedAccountSwitchTo === 'new') { if (requestedAccountSwitchTo === 'new') {
return ScreenState.S_CreateAccount return ScreenState.S_CreateAccount
} else if (requestedAccountSwitchTo === 'starterpack') { } else if (requestedAccountSwitchTo === 'starterpack') {
@@ -47,11 +51,26 @@ export function LoggedOut({onDismiss}: {onDismiss?: () => void}) {
}) })
const {clearRequestedAccount} = useLoggedOutViewControls() const {clearRequestedAccount} = useLoggedOutViewControls()
React.useEffect(() => { const queryClient = useQueryClient()
const {accounts} = useSession()
const agent = useAgent()
useEffect(() => {
const actors = accounts.map(acc => acc.did)
queryClient.prefetchQuery({
queryKey: profilesQueryKey(actors),
staleTime: STALE.MINUTES.FIVE,
queryFn: async () => {
const res = await agent.getProfiles({actors})
return res.data
},
})
}, [accounts, agent, queryClient])
useEffect(() => {
setMinimalShellMode(true) setMinimalShellMode(true)
}, [setMinimalShellMode]) }, [setMinimalShellMode])
const onPressDismiss = React.useCallback(() => { const onPressDismiss = useCallback(() => {
if (onDismiss) { if (onDismiss) {
onDismiss() onDismiss()
} }