From 7a5a906ca50c841177bd105cd006b98ccac2a868 Mon Sep 17 00:00:00 2001 From: allgandalf Date: Mon, 12 May 2025 13:42:58 +0530 Subject: [PATCH 1/3] Show onboarding modal on hybrid app --- src/hooks/useOnboardingFlow.ts | 7 +++++-- src/libs/actions/Welcome/OnboardingFlow.ts | 22 +++++----------------- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/hooks/useOnboardingFlow.ts b/src/hooks/useOnboardingFlow.ts index 7b00a0efc7a..aec4c341f64 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); } }); }, [ @@ -102,3 +104,4 @@ function useOnboardingFlowRouter() { } export default useOnboardingFlowRouter; + diff --git a/src/libs/actions/Welcome/OnboardingFlow.ts b/src/libs/actions/Welcome/OnboardingFlow.ts index d099b1454a7..8be900b3f76 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) { @@ -108,3 +95,4 @@ function clearInitialPath() { } export {getOnboardingInitialPath, startOnboardingFlow, clearInitialPath}; + From 00b80af779de88e27c64545ff7e968883797775a Mon Sep 17 00:00:00 2001 From: allgandalf Date: Mon, 12 May 2025 13:47:28 +0530 Subject: [PATCH 2/3] fix eslint --- src/hooks/useOnboardingFlow.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useOnboardingFlow.ts b/src/hooks/useOnboardingFlow.ts index aec4c341f64..04aa79fdb26 100644 --- a/src/hooks/useOnboardingFlow.ts +++ b/src/hooks/useOnboardingFlow.ts @@ -98,10 +98,10 @@ function useOnboardingFlowRouter() { dismissedProductTraining?.migratedUserWelcomeModal, onboardingValues, dismissedProductTraining, + account?.isFromPublicDomain, ]); return {isOnboardingCompleted: hasCompletedGuidedSetupFlowSelector(onboardingValues), isHybridAppOnboardingCompleted}; } export default useOnboardingFlowRouter; - From ca408713063b0bb1792a4d4105b3958f78be9c24 Mon Sep 17 00:00:00 2001 From: allgandalf Date: Mon, 12 May 2025 13:50:55 +0530 Subject: [PATCH 3/3] fix prettier --- src/libs/actions/Welcome/OnboardingFlow.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/actions/Welcome/OnboardingFlow.ts b/src/libs/actions/Welcome/OnboardingFlow.ts index 8be900b3f76..4eae433441a 100644 --- a/src/libs/actions/Welcome/OnboardingFlow.ts +++ b/src/libs/actions/Welcome/OnboardingFlow.ts @@ -95,4 +95,3 @@ function clearInitialPath() { } export {getOnboardingInitialPath, startOnboardingFlow, clearInitialPath}; -