diff --git a/src/hooks/useOnboardingFlow.ts b/src/hooks/useOnboardingFlow.ts index 7b00a0efc7ac..04aa79fdb267 100644 --- a/src/hooks/useOnboardingFlow.ts +++ b/src/hooks/useOnboardingFlow.ts @@ -21,6 +21,8 @@ function useOnboardingFlowRouter() { const [onboardingValues, isOnboardingCompletedMetadata] = useOnyx(ONYXKEYS.NVP_ONBOARDING, { canBeMissing: true, }); + + const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: true}); const startedOnboardingFlowRef = useRef(false); const [tryNewDot, tryNewDotdMetadata] = useOnyx(ONYXKEYS.NVP_TRY_NEW_DOT, { selector: tryNewDotOnyxSelector, @@ -74,14 +76,14 @@ function useOnboardingFlowRouter() { // This is a special case when user created an account from NewDot without finishing the onboarding flow and then logged in from OldDot if (isHybridAppOnboardingCompleted === true && isOnboardingCompleted === false && !startedOnboardingFlowRef.current) { startedOnboardingFlowRef.current = true; - startOnboardingFlow(undefined, onboardingValues); + startOnboardingFlow(undefined, onboardingValues, account?.isFromPublicDomain); } } // If the user is not transitioning from OldDot to NewDot, we should start NewDot onboarding flow if it's not completed yet if (!CONFIG.IS_HYBRID_APP && isOnboardingCompleted === false && !startedOnboardingFlowRef.current) { startedOnboardingFlowRef.current = true; - startOnboardingFlow(undefined, onboardingValues); + startOnboardingFlow(undefined, onboardingValues, account?.isFromPublicDomain); } }); }, [ @@ -96,6 +98,7 @@ function useOnboardingFlowRouter() { dismissedProductTraining?.migratedUserWelcomeModal, onboardingValues, dismissedProductTraining, + account?.isFromPublicDomain, ]); return {isOnboardingCompleted: hasCompletedGuidedSetupFlowSelector(onboardingValues), isHybridAppOnboardingCompleted}; diff --git a/src/libs/actions/Welcome/OnboardingFlow.ts b/src/libs/actions/Welcome/OnboardingFlow.ts index d099b1454a7c..4eae433441ab 100644 --- a/src/libs/actions/Welcome/OnboardingFlow.ts +++ b/src/libs/actions/Welcome/OnboardingFlow.ts @@ -9,7 +9,6 @@ import CONST from '@src/CONST'; import NAVIGATORS from '@src/NAVIGATORS'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import type Account from '@src/types/onyx/Account'; import type Onboarding from '@src/types/onyx/Onboarding'; let onboardingInitialPath = ''; @@ -35,23 +34,12 @@ Onyx.connect({ }, }); -let userAccount: Account; -Onyx.connect({ - key: ONYXKEYS.ACCOUNT, - callback: (value) => { - if (value === undefined) { - return; - } - userAccount = value; - }, -}); - /** * Start a new onboarding flow or continue from the last visited onboarding page. */ -function startOnboardingFlow(isPrivateDomain?: boolean, onboardingValuesParam?: Onboarding) { +function startOnboardingFlow(isPrivateDomain?: boolean, onboardingValuesParam?: Onboarding, isUserFromPublicDomain?: boolean) { const currentRoute = navigationRef.getCurrentRoute(); - const adaptedState = getAdaptedStateFromPath(getOnboardingInitialPath(isPrivateDomain, onboardingValuesParam), linkingConfig.config, false); + const adaptedState = getAdaptedStateFromPath(getOnboardingInitialPath(isPrivateDomain, onboardingValuesParam, isUserFromPublicDomain), linkingConfig.config, false); const focusedRoute = findFocusedRoute(adaptedState as PartialState>); if (focusedRoute?.name === currentRoute?.name) { return; @@ -63,9 +51,8 @@ function startOnboardingFlow(isPrivateDomain?: boolean, onboardingValuesParam?: } as PartialState); } -function getOnboardingInitialPath(isPrivateDomain?: boolean, onboardingValuesParam?: Onboarding): string { +function getOnboardingInitialPath(isPrivateDomain?: boolean, onboardingValuesParam?: Onboarding, isUserFromPublicDomain?: boolean): string { const state = getStateFromPath(onboardingInitialPath, linkingConfig.config); - const isUserFromPublicDomain = userAccount?.isFromPublicDomain; const currentOnboardingValues = onboardingValuesParam ?? onboardingValues; const isVsb = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.VSB; const isSmb = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.SMB; @@ -82,7 +69,7 @@ function getOnboardingInitialPath(isPrivateDomain?: boolean, onboardingValuesPar if (isIndividual) { Onyx.set(ONYXKEYS.ONBOARDING_CUSTOM_CHOICES, [CONST.ONBOARDING_CHOICES.PERSONAL_SPEND, CONST.ONBOARDING_CHOICES.EMPLOYER, CONST.ONBOARDING_CHOICES.CHAT_SPLIT]); } - if (isUserFromPublicDomain && !currentOnboardingValues?.isMergeAccountStepCompleted) { + if (isUserFromPublicDomain && !onboardingValuesParam?.isMergeAccountStepCompleted) { return `/${ROUTES.ONBOARDING_WORK_EMAIL.route}`; } if (isVsb) {