Skip to content

Commit 18c6687

Browse files
committed
fix: honor /concierge deep link through all onboarding exit paths
1 parent 5d4c0d8 commit 18c6687

3 files changed

Lines changed: 23 additions & 9 deletions

File tree

src/hooks/useAutoCreateSubmitWorkspace.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ function useAutoCreateSubmitWorkspace() {
122122
policyIDForNavigation = existingSubmitPolicyID;
123123
}
124124

125-
navigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueue(policyIDForNavigation, shouldUseNarrowLayout);
125+
// Pass conciergeReportID so the Submit workspace path can honor a pending
126+
// /concierge deep-link intent the same way navigateAfterOnboarding does.
127+
navigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueue(policyIDForNavigation, shouldUseNarrowLayout, conciergeReportID);
126128
},
127129
[
128130
currentUserEmail,
@@ -144,6 +146,7 @@ function useAutoCreateSubmitWorkspace() {
144146
hasActiveAdminPolicies,
145147
shouldUseNarrowLayout,
146148
conciergeChat,
149+
conciergeReportID,
147150
],
148151
);
149152

src/hooks/useCompleteOnboarding.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ function useCompleteOnboarding() {
129129
waitForUpcomingTransition: true,
130130
});
131131

132+
// Pass rhpVariant directly — navigateAfterOnboardingWithMicrotaskQueue expects
133+
// variantOverride as a plain OnboardingRHPVariant value, not a wrapper object.
132134
navigateAfterOnboardingWithMicrotaskQueue(
133135
isSmallScreenWidth,
134136
isBetaEnabled(CONST.BETAS.DEFAULT_ROOMS),
@@ -137,9 +139,7 @@ function useCompleteOnboarding() {
137139
policyID,
138140
adminsChatReportID,
139141
(session?.email ?? '').includes('+'),
140-
{
141-
variantOverride: rhpVariant,
142-
},
142+
rhpVariant,
143143
);
144144
} catch (error) {
145145
Log.warn('[useCompleteOnboarding] Error completing onboarding', {error});

src/libs/navigateAfterOnboarding.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ function navigateAfterOnboarding(
7474
) {
7575
setDisableDismissOnEscape(false);
7676

77+
// Honor a pending /concierge deep-link intent before any other navigation decision.
78+
// The user explicitly opened /concierge before signing up, so Concierge takes priority.
79+
if (consumePendingConciergeDeepLink()) {
80+
Navigation.navigate(conciergeReportID ? ROUTES.REPORT_WITH_ID.getRoute(conciergeReportID) : (ROUTES.CONCIERGE as Route));
81+
return;
82+
}
83+
7784
// On mobile (small screen), Track workspace admins with the trackExpensesWithConcierge variant
7885
// should navigate directly to the Concierge DM (which contains onboarding tasks).
7986
// This check is outside shouldOpenRHPVariant because that function returns false on native
@@ -100,8 +107,6 @@ function navigateAfterOnboarding(
100107
);
101108
if (reportID) {
102109
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(reportID));
103-
} else if (consumePendingConciergeDeepLink()) {
104-
Navigation.navigate(conciergeReportID ? ROUTES.REPORT_WITH_ID.getRoute(conciergeReportID) : (ROUTES.CONCIERGE as Route));
105110
} else {
106111
// Navigate to home to trigger guard evaluation
107112
Navigation.navigate(ROUTES.HOME);
@@ -137,10 +142,16 @@ function navigateAfterOnboardingWithMicrotaskQueue(
137142
* After creating or joining a Submit workspace during onboarding,
138143
* navigate to Workspace > Categories with the side panel open so
139144
* the #admins room is visible in Concierge Anywhere.
145+
* If the user arrived via a Concierge deep link, navigate to Concierge instead.
140146
*/
141-
function navigateToSubmitWorkspaceAfterOnboarding(policyID?: string, shouldUseNarrowLayout = false) {
147+
function navigateToSubmitWorkspaceAfterOnboarding(policyID?: string, shouldUseNarrowLayout = false, conciergeReportID?: string) {
142148
setDisableDismissOnEscape(false);
143149

150+
if (consumePendingConciergeDeepLink()) {
151+
Navigation.navigate(conciergeReportID ? ROUTES.REPORT_WITH_ID.getRoute(conciergeReportID) : (ROUTES.CONCIERGE as Route));
152+
return;
153+
}
154+
144155
if (!policyID) {
145156
Navigation.navigate(ROUTES.HOME);
146157
return;
@@ -155,10 +166,10 @@ function navigateToSubmitWorkspaceAfterOnboarding(policyID?: string, shouldUseNa
155166
SidePanelActions.openSidePanel(!shouldUseNarrowLayout);
156167
}
157168

158-
function navigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueue(policyID?: string, shouldUseNarrowLayout = false) {
169+
function navigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueue(policyID?: string, shouldUseNarrowLayout = false, conciergeReportID?: string) {
159170
Navigation.dismissModal();
160171
Navigation.setNavigationActionToMicrotaskQueue(() => {
161-
navigateToSubmitWorkspaceAfterOnboarding(policyID, shouldUseNarrowLayout);
172+
navigateToSubmitWorkspaceAfterOnboarding(policyID, shouldUseNarrowLayout, conciergeReportID);
162173
});
163174
}
164175

0 commit comments

Comments
 (0)