Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6421,6 +6421,7 @@ const CONST = {
RHP_CONCIERGE_DM: 'rhpConciergeDm',
RHP_ADMINS_ROOM: 'rhpAdminsRoom',
RHP_HOME_PAGE: 'rhpHomePage',
TRACK_EXPENSES_WITH_CONCIERGE: 'trackExpensesWithConcierge',
CONTROL: 'control',
},
ACTIONABLE_TRACK_EXPENSE_WHISPER_MESSAGE: 'What would you like to do with this expense?',
Expand Down
10 changes: 8 additions & 2 deletions src/components/SidePanel/RHPVariantTest/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,20 @@ Onyx.connectWithoutView({

/**
* Determines if the user should be navigated to the RHP variant side panel after onboarding.
* The RHP variant is only shown to micro companies that are part of the RHP experiment.
* The RHP variant is only shown to micro companies that are part of the RHP experiment,
* except for the Track expenses variant which applies regardless of company size.
*
* Accepts an optional variantOverride to bypass the module-level Onyx variable, avoiding a race
* condition where the Onyx callback hasn't fired yet when this is called immediately after the
* CompleteGuidedSetup API response.
*/
const shouldOpenRHPVariant: ShouldOpenRHPVariant = (variantOverride) => {
const variant = variantOverride ?? onboardingRHPVariant;

if (variant === CONST.ONBOARDING_RHP_VARIANT.TRACK_EXPENSES_WITH_CONCIERGE) {
return true;
}

const isMicroCompany = onboardingCompanySize === CONST.ONBOARDING_COMPANY_SIZE.MICRO;
const isRHPConciergeDM = variant === CONST.ONBOARDING_RHP_VARIANT.RHP_CONCIERGE_DM;
const isRHPAdminsRoom = variant === CONST.ONBOARDING_RHP_VARIANT.RHP_ADMINS_ROOM;
Expand All @@ -55,7 +61,7 @@ const shouldOpenRHPVariant: ShouldOpenRHPVariant = (variantOverride) => {
*/
const handleRHPVariantNavigation: HandleRHPVariantNavigation = (onboardingPolicyID, variantOverride) => {
const variant = variantOverride ?? onboardingRHPVariant;
if (variant === CONST.ONBOARDING_RHP_VARIANT.RHP_HOME_PAGE) {
if (variant === CONST.ONBOARDING_RHP_VARIANT.RHP_HOME_PAGE || variant === CONST.ONBOARDING_RHP_VARIANT.TRACK_EXPENSES_WITH_CONCIERGE) {
Navigation.navigate(ROUTES.HOME);
SidePanelActions.openSidePanel(true);
return;
Expand Down
9 changes: 9 additions & 0 deletions src/libs/navigateAfterOnboarding.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {handleRHPVariantNavigation, shouldOpenRHPVariant} from '@components/SidePanel/RHPVariantTest';
import CONST from '@src/CONST';
import ROUTES from '@src/ROUTES';
import type {OnboardingRHPVariant} from '@src/types/onyx';
import {setDisableDismissOnEscape} from './actions/Modal';
Expand Down Expand Up @@ -60,6 +61,14 @@ function navigateAfterOnboarding(
return;
}

// On mobile (small screen), Track workspace admins with the trackExpensesWithConcierge variant
// should navigate directly to the Concierge DM (which contains onboarding tasks).
// The native shouldOpenRHPVariant() returns false (no side panel on mobile), so we handle it here.
if (isSmallScreenWidth && onboardingRHPVariant === CONST.ONBOARDING_RHP_VARIANT.TRACK_EXPENSES_WITH_CONCIERGE) {
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(conciergeReportID));
return;
}

const reportID = getReportIDAfterOnboarding(
isSmallScreenWidth,
canUseDefaultRooms,
Expand Down
3 changes: 2 additions & 1 deletion src/types/onyx/OnboardingRHPVariant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
* @description 'rhpConciergeDm' - Admin of workspace with Concierge DM
* @description 'rhpAdminsRoom' - Admin of workspace with the admins room
* @description 'rhpHomePage' - Navigate to Home page with Concierge Anywhere accessible in #admins room
* @description 'trackExpensesWithConcierge' - Track workspace admins land on Home page with Concierge side panel (desktop) or Concierge chat (mobile)
*/
type OnboardingRHPVariant = 'rhpConciergeDm' | 'rhpAdminsRoom' | 'rhpHomePage' | 'control';
type OnboardingRHPVariant = 'rhpConciergeDm' | 'rhpAdminsRoom' | 'rhpHomePage' | 'trackExpensesWithConcierge' | 'control';

export default OnboardingRHPVariant;
Loading