Skip to content

Commit 6164adb

Browse files
committed
Improve onboardingInitialPath check
1 parent 2583d8a commit 6164adb

4 files changed

Lines changed: 47 additions & 4 deletions

File tree

src/hooks/useOnboardingFlow.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ function useOnboardingFlowRouter() {
2121
const [onboardingValues, isOnboardingCompletedMetadata] = useOnyx(ONYXKEYS.NVP_ONBOARDING, {
2222
canBeMissing: true,
2323
});
24+
const [currentOnboardingPurposeSelected] = useOnyx(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED, {canBeMissing: true});
25+
const [currentOnboardingCompanySize] = useOnyx(ONYXKEYS.ONBOARDING_COMPANY_SIZE, {canBeMissing: true});
2426

2527
const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: true});
2628
const startedOnboardingFlowRef = useRef(false);
@@ -81,6 +83,8 @@ function useOnboardingFlowRouter() {
8183
onboardingValuesParam: onboardingValues,
8284
isUserFromPublicDomain: !!account?.isFromPublicDomain,
8385
hasAccessiblePolicies: !!account?.hasAccessibleDomainPolicies,
86+
currentOnboardingCompanySize,
87+
currentOnboardingPurposeSelected,
8488
});
8589
}
8690
}
@@ -92,6 +96,8 @@ function useOnboardingFlowRouter() {
9296
onboardingValuesParam: onboardingValues,
9397
isUserFromPublicDomain: !!account?.isFromPublicDomain,
9498
hasAccessiblePolicies: !!account?.hasAccessibleDomainPolicies,
99+
currentOnboardingCompanySize,
100+
currentOnboardingPurposeSelected,
95101
});
96102
}
97103
});
@@ -109,6 +115,8 @@ function useOnboardingFlowRouter() {
109115
dismissedProductTraining,
110116
account?.isFromPublicDomain,
111117
account?.hasAccessibleDomainPolicies,
118+
currentOnboardingCompanySize,
119+
currentOnboardingPurposeSelected,
112120
]);
113121

114122
return {isOnboardingCompleted: hasCompletedGuidedSetupFlowSelector(onboardingValues), isHybridAppOnboardingCompleted};

src/libs/Navigation/NavigationRoot.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ function NavigationRoot({authenticated, lastVisitedPath, initialUrl, onReady}: N
104104
canBeMissing: true,
105105
});
106106
const [hasNonPersonalPolicy] = useOnyx(ONYXKEYS.HAS_NON_PERSONAL_POLICY, {canBeMissing: true});
107+
const [currentOnboardingPurposeSelected] = useOnyx(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED, {canBeMissing: true});
108+
const [currentOnboardingCompanySize] = useOnyx(ONYXKEYS.ONBOARDING_COMPANY_SIZE, {canBeMissing: true});
107109

108110
const previousAuthenticated = usePrevious(authenticated);
109111

@@ -135,6 +137,8 @@ function NavigationRoot({authenticated, lastVisitedPath, initialUrl, onReady}: N
135137
getOnboardingInitialPath({
136138
isUserFromPublicDomain: !!account.isFromPublicDomain,
137139
hasAccessiblePolicies: !!account.hasAccessibleDomainPolicies,
140+
currentOnboardingPurposeSelected,
141+
currentOnboardingCompanySize,
138142
}),
139143
linkingConfig.config,
140144
);

src/libs/actions/Report.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,22 @@ Onyx.connect({
360360
},
361361
});
362362

363+
let currentOnboardingPurposeSelected: OnyxEntry<OnboardingPurpose>;
364+
Onyx.connect({
365+
key: ONYXKEYS.ONBOARDING_PURPOSE_SELECTED,
366+
callback: (value) => {
367+
currentOnboardingPurposeSelected = value;
368+
},
369+
});
370+
371+
let currentOnboardingCompanySize: OnyxEntry<OnboardingCompanySize>;
372+
Onyx.connect({
373+
key: ONYXKEYS.ONBOARDING_COMPANY_SIZE,
374+
callback: (value) => {
375+
currentOnboardingCompanySize = value;
376+
},
377+
});
378+
363379
const typingWatchTimers: Record<string, NodeJS.Timeout> = {};
364380

365381
let reportIDDeeplinkedFromOldDot: string | undefined;
@@ -3457,6 +3473,8 @@ function openReportFromDeepLink(url: string) {
34573473
onboardingValuesParam: val,
34583474
hasAccessiblePolicies: !!account?.hasAccessibleDomainPolicies,
34593475
isUserFromPublicDomain: !!account?.isFromPublicDomain,
3476+
currentOnboardingPurposeSelected,
3477+
currentOnboardingCompanySize,
34603478
}),
34613479
onCompleted: handleDeeplinkNavigation,
34623480
onCanceled: handleDeeplinkNavigation,

src/libs/actions/Welcome/OnboardingFlow.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {findFocusedRoute, getStateFromPath} from '@react-navigation/native';
22
import type {NavigationState, PartialState} from '@react-navigation/native';
3+
import type {OnyxEntry} from 'react-native-onyx';
34
import Onyx from 'react-native-onyx';
45
import type {ValueOf} from 'type-fest';
56
import {translate} from '@libs/Localize';
@@ -38,15 +39,17 @@ Onyx.connect({
3839
},
3940
});
4041

42+
type OnboardingCompanySize = ValueOf<typeof CONST.ONBOARDING_COMPANY_SIZE>;
43+
type OnboardingPurpose = ValueOf<typeof CONST.ONBOARDING_CHOICES>;
44+
4145
type GetOnboardingInitialPathParamsType = {
4246
isUserFromPublicDomain: boolean;
4347
hasAccessiblePolicies: boolean;
4448
onboardingValuesParam?: Onboarding;
49+
currentOnboardingPurposeSelected: OnyxEntry<OnboardingPurpose>;
50+
currentOnboardingCompanySize: OnyxEntry<OnboardingCompanySize>;
4551
};
4652

47-
type OnboardingCompanySize = ValueOf<typeof CONST.ONBOARDING_COMPANY_SIZE>;
48-
type OnboardingPurpose = ValueOf<typeof CONST.ONBOARDING_CHOICES>;
49-
5053
type OnboardingTaskLinks = Partial<{
5154
onboardingCompanySize: OnboardingCompanySize;
5255
integrationName: string;
@@ -100,12 +103,14 @@ function startOnboardingFlow(startOnboardingFlowParams: GetOnboardingInitialPath
100103
}
101104

102105
function getOnboardingInitialPath(getOnboardingInitialPathParams: GetOnboardingInitialPathParamsType): string {
103-
const {isUserFromPublicDomain, hasAccessiblePolicies, onboardingValuesParam} = getOnboardingInitialPathParams;
106+
const {isUserFromPublicDomain, hasAccessiblePolicies, onboardingValuesParam, currentOnboardingPurposeSelected, currentOnboardingCompanySize} = getOnboardingInitialPathParams;
104107
const state = getStateFromPath(onboardingInitialPath, linkingConfig.config);
105108
const currentOnboardingValues = onboardingValuesParam ?? onboardingValues;
106109
const isVsb = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.VSB;
107110
const isSmb = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.SMB;
108111
const isIndividual = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.INDIVIDUAL;
112+
const isCurrentOnboardingPurposeManageTeam = currentOnboardingPurposeSelected === CONST.ONBOARDING_CHOICES.MANAGE_TEAM;
113+
const isCurrentOnboardingCompanySizeMicro = currentOnboardingCompanySize === CONST.ONBOARDING_COMPANY_SIZE.MICRO;
109114

110115
if (isVsb) {
111116
Onyx.set(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED, CONST.ONBOARDING_CHOICES.MANAGE_TEAM);
@@ -137,6 +142,14 @@ function getOnboardingInitialPath(getOnboardingInitialPathParams: GetOnboardingI
137142
return `/${ROUTES.ONBOARDING_ROOT.route}`;
138143
}
139144

145+
if (onboardingInitialPath.includes(ROUTES.ONBOARDING_EMPLOYEES.route) && !isCurrentOnboardingPurposeManageTeam) {
146+
return '';
147+
}
148+
149+
if (onboardingInitialPath.includes(ROUTES.ONBOARDING_ACCOUNTING.route) && (!isCurrentOnboardingPurposeManageTeam || !isCurrentOnboardingCompanySizeMicro)) {
150+
return '';
151+
}
152+
140153
return onboardingInitialPath;
141154
}
142155

0 commit comments

Comments
 (0)