Skip to content

Commit a1e7959

Browse files
committed
Fix onboardingInitialPath in mobile
1 parent f3c93d8 commit a1e7959

5 files changed

Lines changed: 29 additions & 22 deletions

File tree

src/hooks/useOnboardingFlow.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ function useOnboardingFlowRouter() {
2323
});
2424
const [currentOnboardingPurposeSelected] = useOnyx(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED, {canBeMissing: true});
2525
const [currentOnboardingCompanySize] = useOnyx(ONYXKEYS.ONBOARDING_COMPANY_SIZE, {canBeMissing: true});
26+
const [onboardingInitialPath, onboardingInitialPathResult] = useOnyx(ONYXKEYS.ONBOARDING_LAST_VISITED_PATH, {canBeMissing: true});
27+
const isOnboardingInitialPathLoading = isLoadingOnyxValue(onboardingInitialPathResult);
2628

2729
const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: true});
2830
const startedOnboardingFlowRef = useRef(false);
@@ -39,7 +41,7 @@ function useOnboardingFlowRouter() {
3941
useEffect(() => {
4042
// This should delay opening the onboarding modal so it does not interfere with the ongoing ReportScreen params changes
4143
InteractionManager.runAfterInteractions(() => {
42-
if (isLoadingApp !== false) {
44+
if (isLoadingApp !== false || isOnboardingInitialPathLoading) {
4345
return;
4446
}
4547

@@ -85,6 +87,7 @@ function useOnboardingFlowRouter() {
8587
hasAccessiblePolicies: !!account?.hasAccessibleDomainPolicies,
8688
currentOnboardingCompanySize,
8789
currentOnboardingPurposeSelected,
90+
onboardingInitialPath,
8891
});
8992
}
9093
}
@@ -98,6 +101,7 @@ function useOnboardingFlowRouter() {
98101
hasAccessiblePolicies: !!account?.hasAccessibleDomainPolicies,
99102
currentOnboardingCompanySize,
100103
currentOnboardingPurposeSelected,
104+
onboardingInitialPath,
101105
});
102106
}
103107
});
@@ -117,6 +121,8 @@ function useOnboardingFlowRouter() {
117121
account?.hasAccessibleDomainPolicies,
118122
currentOnboardingCompanySize,
119123
currentOnboardingPurposeSelected,
124+
onboardingInitialPath,
125+
isOnboardingInitialPathLoading,
120126
]);
121127

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

src/libs/Navigation/NavigationRoot.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ function NavigationRoot({authenticated, lastVisitedPath, initialUrl, onReady}: N
106106
const [hasNonPersonalPolicy] = useOnyx(ONYXKEYS.HAS_NON_PERSONAL_POLICY, {canBeMissing: true});
107107
const [currentOnboardingPurposeSelected] = useOnyx(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED, {canBeMissing: true});
108108
const [currentOnboardingCompanySize] = useOnyx(ONYXKEYS.ONBOARDING_COMPANY_SIZE, {canBeMissing: true});
109+
const [onboardingInitialPath] = useOnyx(ONYXKEYS.ONBOARDING_LAST_VISITED_PATH, {canBeMissing: true});
109110

110111
const previousAuthenticated = usePrevious(authenticated);
111112

@@ -139,6 +140,7 @@ function NavigationRoot({authenticated, lastVisitedPath, initialUrl, onReady}: N
139140
hasAccessiblePolicies: !!account.hasAccessibleDomainPolicies,
140141
currentOnboardingPurposeSelected,
141142
currentOnboardingCompanySize,
143+
onboardingInitialPath,
142144
}),
143145
linkingConfig.config,
144146
);

src/libs/actions/Report.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,14 @@ Onyx.connect({
380380
},
381381
});
382382

383+
let onboardingInitialPath: OnyxEntry<string>;
384+
Onyx.connect({
385+
key: ONYXKEYS.ONBOARDING_LAST_VISITED_PATH,
386+
callback: (value) => {
387+
onboardingInitialPath = value;
388+
},
389+
});
390+
383391
const typingWatchTimers: Record<string, NodeJS.Timeout> = {};
384392

385393
let reportIDDeeplinkedFromOldDot: string | undefined;
@@ -3472,6 +3480,7 @@ function openReportFromDeepLink(url: string) {
34723480
isUserFromPublicDomain: !!account?.isFromPublicDomain,
34733481
currentOnboardingPurposeSelected,
34743482
currentOnboardingCompanySize,
3483+
onboardingInitialPath,
34753484
}),
34763485
onCompleted: handleDeeplinkNavigation,
34773486
onCanceled: handleDeeplinkNavigation,

src/libs/actions/Welcome/OnboardingFlow.ts

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,6 @@ import ONYXKEYS from '@src/ONYXKEYS';
1616
import ROUTES from '@src/ROUTES';
1717
import type {Locale, Onboarding} from '@src/types/onyx';
1818

19-
let onboardingInitialPath = '';
20-
const onboardingLastVisitedPathConnection = Onyx.connect({
21-
key: ONYXKEYS.ONBOARDING_LAST_VISITED_PATH,
22-
callback: (value) => {
23-
if (value === undefined) {
24-
return;
25-
}
26-
onboardingInitialPath = value;
27-
Onyx.disconnect(onboardingLastVisitedPathConnection);
28-
},
29-
});
30-
3119
let onboardingValues: Onboarding;
3220
Onyx.connect({
3321
key: ONYXKEYS.NVP_ONBOARDING,
@@ -48,6 +36,7 @@ type GetOnboardingInitialPathParamsType = {
4836
onboardingValuesParam?: Onboarding;
4937
currentOnboardingPurposeSelected: OnyxEntry<OnboardingPurpose>;
5038
currentOnboardingCompanySize: OnyxEntry<OnboardingCompanySize>;
39+
onboardingInitialPath: OnyxEntry<string>;
5140
};
5241

5342
type OnboardingTaskLinks = Partial<{
@@ -103,14 +92,20 @@ function startOnboardingFlow(startOnboardingFlowParams: GetOnboardingInitialPath
10392
}
10493

10594
function getOnboardingInitialPath(getOnboardingInitialPathParams: GetOnboardingInitialPathParamsType): string {
106-
const {isUserFromPublicDomain, hasAccessiblePolicies, onboardingValuesParam, currentOnboardingPurposeSelected, currentOnboardingCompanySize} = getOnboardingInitialPathParams;
95+
const {
96+
isUserFromPublicDomain,
97+
hasAccessiblePolicies,
98+
onboardingValuesParam,
99+
currentOnboardingPurposeSelected,
100+
currentOnboardingCompanySize,
101+
onboardingInitialPath = '',
102+
} = getOnboardingInitialPathParams;
107103
const state = getStateFromPath(onboardingInitialPath, linkingConfig.config);
108104
const currentOnboardingValues = onboardingValuesParam ?? onboardingValues;
109105
const isVsb = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.VSB;
110106
const isSmb = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.SMB;
111107
const isIndividual = currentOnboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.INDIVIDUAL;
112108
const isCurrentOnboardingPurposeManageTeam = currentOnboardingPurposeSelected === CONST.ONBOARDING_CHOICES.MANAGE_TEAM;
113-
const isCurrentOnboardingCompanySizeMicro = currentOnboardingCompanySize === CONST.ONBOARDING_COMPANY_SIZE.MICRO;
114109

115110
if (isVsb) {
116111
Onyx.set(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED, CONST.ONBOARDING_CHOICES.MANAGE_TEAM);
@@ -146,7 +141,7 @@ function getOnboardingInitialPath(getOnboardingInitialPathParams: GetOnboardingI
146141
return `/${ROUTES.ONBOARDING_PURPOSE.route}`;
147142
}
148143

149-
if (onboardingInitialPath.includes(ROUTES.ONBOARDING_ACCOUNTING.route) && (!isCurrentOnboardingPurposeManageTeam || !isCurrentOnboardingCompanySizeMicro)) {
144+
if (onboardingInitialPath.includes(ROUTES.ONBOARDING_ACCOUNTING.route) && (!isCurrentOnboardingPurposeManageTeam || !currentOnboardingCompanySize)) {
150145
return `/${ROUTES.ONBOARDING_PURPOSE.route}`;
151146
}
152147

@@ -395,8 +390,5 @@ const getOnboardingMessages = (locale?: Locale) => {
395390
};
396391
};
397392

398-
function clearInitialPath() {
399-
onboardingInitialPath = '';
400-
}
401393
export type {OnboardingMessage, OnboardingTask, OnboardingTaskLinks, OnboardingPurpose, OnboardingCompanySize};
402-
export {getOnboardingInitialPath, startOnboardingFlow, clearInitialPath, getOnboardingMessages};
394+
export {getOnboardingInitialPath, startOnboardingFlow, getOnboardingMessages};

src/libs/actions/Welcome/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import type {OnboardingPurpose} from '@src/types/onyx';
1313
import type Onboarding from '@src/types/onyx/Onboarding';
1414
import type TryNewDot from '@src/types/onyx/TryNewDot';
1515
import {isEmptyObject} from '@src/types/utils/EmptyObject';
16-
import {clearInitialPath} from './OnboardingFlow';
1716
import type {OnboardingCompanySize} from './OnboardingFlow';
1817

1918
type OnboardingData = Onboarding | undefined;
@@ -195,7 +194,6 @@ function resetAllChecks() {
195194
});
196195
isLoadingReportData = true;
197196
isOnboardingInProgress = false;
198-
clearInitialPath();
199197
}
200198

201199
function setSelfTourViewed(shouldUpdateOnyxDataOnlyLocally = false) {

0 commit comments

Comments
 (0)