about summary refs log tree commit diff
path: root/src/screens/Onboarding/StepFinished.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/screens/Onboarding/StepFinished.tsx')
-rw-r--r--src/screens/Onboarding/StepFinished.tsx55
1 files changed, 35 insertions, 20 deletions
diff --git a/src/screens/Onboarding/StepFinished.tsx b/src/screens/Onboarding/StepFinished.tsx
index 148069621..51793777e 100644
--- a/src/screens/Onboarding/StepFinished.tsx
+++ b/src/screens/Onboarding/StepFinished.tsx
@@ -3,13 +3,18 @@ import {View} from 'react-native'
 import {TID} from '@atproto/common-web'
 import {msg, Trans} from '@lingui/macro'
 import {useLingui} from '@lingui/react'
+import {useQueryClient} from '@tanstack/react-query'
 
 import {useAnalytics} from '#/lib/analytics/analytics'
 import {BSKY_APP_ACCOUNT_DID, IS_PROD_SERVICE} from '#/lib/constants'
 import {DISCOVER_SAVED_FEED, TIMELINE_SAVED_FEED} from '#/lib/constants'
 import {logEvent, useGate} from '#/lib/statsig/statsig'
 import {logger} from '#/logger'
-import {useOverwriteSavedFeedsMutation} from '#/state/queries/preferences'
+import {
+  preferencesQueryKey,
+  useOverwriteSavedFeedsMutation,
+} from '#/state/queries/preferences'
+import {RQKEY as profileRQKey} from '#/state/queries/profile'
 import {useAgent} from '#/state/session'
 import {useOnboardingDispatch} from '#/state/shell'
 import {uploadBlob} from 'lib/api'
@@ -41,6 +46,7 @@ export function StepFinished() {
   const onboardDispatch = useOnboardingDispatch()
   const [saving, setSaving] = React.useState(false)
   const {mutateAsync: overwriteSavedFeeds} = useOverwriteSavedFeedsMutation()
+  const queryClient = useQueryClient()
   const {getAgent} = useAgent()
   const gate = useGate()
 
@@ -112,33 +118,41 @@ export function StepFinished() {
             ])
           }
         })(),
-      ])
-
-      if (gate('reduced_onboarding_and_home_algo')) {
-        await getAgent().upsertProfile(async existing => {
-          existing = existing ?? {}
 
-          if (profileStepResults.imageUri && profileStepResults.imageMime) {
-            const res = await uploadBlob(
-              getAgent(),
-              profileStepResults.imageUri,
-              profileStepResults.imageMime,
-            )
-
-            if (res.data.blob) {
-              existing.avatar = res.data.blob
-            }
+        (async () => {
+          const {imageUri, imageMime} = profileStepResults
+          if (imageUri && imageMime) {
+            const blobPromise = uploadBlob(getAgent(), imageUri, imageMime)
+            await getAgent().upsertProfile(async existing => {
+              existing = existing ?? {}
+              const res = await blobPromise
+              if (res.data.blob) {
+                existing.avatar = res.data.blob
+              }
+              return existing
+            })
           }
-
-          return existing
-        })
-      }
+        })(),
+      ])
     } catch (e: any) {
       logger.info(`onboarding: bulk save failed`)
       logger.error(e)
       // don't alert the user, just let them into their account
     }
 
+    // Try to ensure that prefs and profile are up-to-date by the time we render Home.
+    await Promise.all([
+      queryClient.invalidateQueries({
+        queryKey: preferencesQueryKey,
+      }),
+      queryClient.invalidateQueries({
+        queryKey: profileRQKey(getAgent().session?.did ?? ''),
+      }),
+    ]).catch(e => {
+      logger.error(e)
+      // Keep going.
+    })
+
     setSaving(false)
     dispatch({type: 'finish'})
     onboardDispatch({type: 'finish'})
@@ -154,6 +168,7 @@ export function StepFinished() {
     track,
     getAgent,
     gate,
+    queryClient,
   ])
 
   React.useEffect(() => {