|
1 | 1 | import {findFocusedRoute, getStateFromPath} from '@react-navigation/native'; |
2 | 2 | import type {NavigationState, PartialState} from '@react-navigation/native'; |
| 3 | +import type {OnyxEntry} from 'react-native-onyx'; |
3 | 4 | import Onyx from 'react-native-onyx'; |
4 | 5 | import type {ValueOf} from 'type-fest'; |
5 | 6 | import {translate} from '@libs/Localize'; |
@@ -38,15 +39,17 @@ Onyx.connect({ |
38 | 39 | }, |
39 | 40 | }); |
40 | 41 |
|
| 42 | +type OnboardingCompanySize = ValueOf<typeof CONST.ONBOARDING_COMPANY_SIZE>; |
| 43 | +type OnboardingPurpose = ValueOf<typeof CONST.ONBOARDING_CHOICES>; |
| 44 | + |
41 | 45 | type GetOnboardingInitialPathParamsType = { |
42 | 46 | isUserFromPublicDomain: boolean; |
43 | 47 | hasAccessiblePolicies: boolean; |
44 | 48 | onboardingValuesParam?: Onboarding; |
| 49 | + currentOnboardingPurposeSelected: OnyxEntry<OnboardingPurpose>; |
| 50 | + currentOnboardingCompanySize: OnyxEntry<OnboardingCompanySize>; |
45 | 51 | }; |
46 | 52 |
|
47 | | -type OnboardingCompanySize = ValueOf<typeof CONST.ONBOARDING_COMPANY_SIZE>; |
48 | | -type OnboardingPurpose = ValueOf<typeof CONST.ONBOARDING_CHOICES>; |
49 | | - |
50 | 53 | type OnboardingTaskLinks = Partial<{ |
51 | 54 | onboardingCompanySize: OnboardingCompanySize; |
52 | 55 | integrationName: string; |
@@ -100,12 +103,14 @@ function startOnboardingFlow(startOnboardingFlowParams: GetOnboardingInitialPath |
100 | 103 | } |
101 | 104 |
|
102 | 105 | function getOnboardingInitialPath(getOnboardingInitialPathParams: GetOnboardingInitialPathParamsType): string { |
103 | | - const {isUserFromPublicDomain, hasAccessiblePolicies, onboardingValuesParam} = getOnboardingInitialPathParams; |
| 106 | + const {isUserFromPublicDomain, hasAccessiblePolicies, onboardingValuesParam, currentOnboardingPurposeSelected, currentOnboardingCompanySize} = getOnboardingInitialPathParams; |
104 | 107 | const state = getStateFromPath(onboardingInitialPath, linkingConfig.config); |
105 | 108 | const currentOnboardingValues = onboardingValuesParam ?? onboardingValues; |
106 | 109 | const isVsb = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.VSB; |
107 | 110 | const isSmb = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.SMB; |
108 | 111 | 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; |
109 | 114 |
|
110 | 115 | if (isVsb) { |
111 | 116 | Onyx.set(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED, CONST.ONBOARDING_CHOICES.MANAGE_TEAM); |
@@ -137,6 +142,14 @@ function getOnboardingInitialPath(getOnboardingInitialPathParams: GetOnboardingI |
137 | 142 | return `/${ROUTES.ONBOARDING_ROOT.route}`; |
138 | 143 | } |
139 | 144 |
|
| 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 | + |
140 | 153 | return onboardingInitialPath; |
141 | 154 | } |
142 | 155 |
|
|
0 commit comments