update base

This commit is contained in:
Hailey
2024-02-13 09:48:16 -08:00
parent 579a07db9e
commit db6f50cafe
3 changed files with 17 additions and 58 deletions
+2
View File
@@ -149,6 +149,8 @@ export type TrackPropertiesMap = {
} }
'OnboardingV2:StepModeration:Start': {} 'OnboardingV2:StepModeration:Start': {}
'OnboardingV2:StepModeration:End': {} 'OnboardingV2:StepModeration:End': {}
'OnboardingV2:StepProfile:Start': {}
'OnboardingV2:StepProfile:End': {}
'OnboardingV2:StepFinished:Start': {} 'OnboardingV2:StepFinished:Start': {}
'OnboardingV2:StepFinished:End': {} 'OnboardingV2:StepFinished:End': {}
'OnboardingV2:Complete': {} 'OnboardingV2:Complete': {}
+11 -55
View File
@@ -3,7 +3,6 @@ import {View} from 'react-native'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {logger} from '#/logger'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {Button, ButtonText, ButtonIcon} from '#/components/Button' import {Button, ButtonText, ButtonIcon} from '#/components/Button'
import {News2_Stroke2_Corner0_Rounded as News} from '#/components/icons/News2' import {News2_Stroke2_Corner0_Rounded as News} from '#/components/icons/News2'
@@ -13,8 +12,6 @@ import {Trending2_Stroke2_Corner2_Rounded as Trending} from '#/components/icons/
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useOnboardingDispatch} from '#/state/shell' import {useOnboardingDispatch} from '#/state/shell'
import {Loader} from '#/components/Loader' import {Loader} from '#/components/Loader'
import {useSetSaveFeedsMutation} from '#/state/queries/preferences'
import {getAgent} from '#/state/session'
import {useAnalytics} from '#/lib/analytics/analytics' import {useAnalytics} from '#/lib/analytics/analytics'
import {Context} from '#/screens/Onboarding/state' import {Context} from '#/screens/Onboarding/state'
@@ -24,10 +21,7 @@ import {
OnboardingControls, OnboardingControls,
} from '#/screens/Onboarding/Layout' } from '#/screens/Onboarding/Layout'
import {IconCircle} from '#/screens/Onboarding/IconCircle' import {IconCircle} from '#/screens/Onboarding/IconCircle'
import { import {ChevronRight_Stroke2_Corner0_Rounded as ChevronRight} from '#/components/icons/Chevron'
bulkWriteFollows,
sortPrimaryAlgorithmFeeds,
} from '#/screens/Onboarding/util'
export function StepProfile() { export function StepProfile() {
const {_} = useLingui() const {_} = useLingui()
@@ -35,53 +29,16 @@ export function StepProfile() {
const {track} = useAnalytics() const {track} = useAnalytics()
const {state, dispatch} = React.useContext(Context) const {state, dispatch} = React.useContext(Context)
const onboardDispatch = useOnboardingDispatch() const onboardDispatch = useOnboardingDispatch()
const [saving, setSaving] = React.useState(false)
const {mutateAsync: saveFeeds} = useSetSaveFeedsMutation()
const finishOnboarding = React.useCallback(async () => {
setSaving(true)
const {
interestsStepResults,
suggestedAccountsStepResults,
algoFeedsStepResults,
topicalFeedsStepResults,
} = state
const {selectedInterests} = interestsStepResults
const selectedFeeds = [
...sortPrimaryAlgorithmFeeds(algoFeedsStepResults.feedUris),
...topicalFeedsStepResults.feedUris,
]
try {
await Promise.all([
bulkWriteFollows(suggestedAccountsStepResults.accountDids),
// these must be serial
(async () => {
await getAgent().setInterestsPref({tags: selectedInterests})
await saveFeeds({
saved: selectedFeeds,
pinned: selectedFeeds,
})
})(),
])
} catch (e: any) {
logger.info(`onboarding: bulk save failed`)
logger.error(e)
// don't alert the user, just let them into their account
}
setSaving(false)
dispatch({type: 'finish'})
onboardDispatch({type: 'finish'})
track('OnboardingV2:StepFinished:End')
track('OnboardingV2:Complete')
}, [state, dispatch, onboardDispatch, setSaving, saveFeeds, track])
React.useEffect(() => { React.useEffect(() => {
track('OnboardingV2:StepFinished:Start') track('OnboardingV2:StepProfile:Start')
}, [track]) }, [track])
const onContinue = React.useCallback(() => {
dispatch({type: 'next'})
track('OnboardingV2:StepProfile:End')
}, [track, dispatch])
return ( return (
<View style={[a.align_start]}> <View style={[a.align_start]}>
<IconCircle icon={Check} style={[a.mb_2xl]} /> <IconCircle icon={Check} style={[a.mb_2xl]} />
@@ -140,17 +97,16 @@ export function StepProfile() {
<OnboardingControls.Portal> <OnboardingControls.Portal>
<Button <Button
disabled={saving}
key={state.activeStep} // remove focus state on nav key={state.activeStep} // remove focus state on nav
variant="gradient" variant="gradient"
color="gradient_sky" color="gradient_sky"
size="large" size="large"
label={_(msg`Complete onboarding and start using your account`)} label={_(msg`Continue to next step`)}
onPress={finishOnboarding}> onPress={onContinue}>
<ButtonText> <ButtonText>
{saving ? <Trans>Finalizing</Trans> : <Trans>Let's go!</Trans>} <Trans>Continue</Trans>
</ButtonText> </ButtonText>
{saving && <ButtonIcon icon={Loader} position="right" />} <ButtonIcon icon={ChevronRight} position="right" />
</Button> </Button>
</OnboardingControls.Portal> </OnboardingControls.Portal>
</View> </View>
+4 -3
View File
@@ -71,9 +71,10 @@ export type ApiResponseMap = {
export const initialState: OnboardingState = { export const initialState: OnboardingState = {
hasPrev: false, hasPrev: false,
totalSteps: 7, totalSteps: 8,
activeStep: 'interests', // activeStep: 'interests', // TODO revert this
activeStepIndex: 1, activeStep: 'profile',
activeStepIndex: 7,
interestsStepResults: { interestsStepResults: {
selectedInterests: [], selectedInterests: [],