Skip to content

Commit f0d27d4

Browse files
authored
Merge pull request Expensify#88796 from Expensify/claude-updateOnboardingPurposeModal
2 parents 69cb8b6 + 72049a2 commit f0d27d4

28 files changed

Lines changed: 179 additions & 77 deletions

File tree

Lines changed: 1 addition & 0 deletions
Loading

src/CONST/index.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,17 +105,19 @@ const brokenConnectionScrapeStatuses: number[] = [200, 434, 531, 530, 500, 666];
105105
const cardHiddenFromSearchStates: number[] = [2, 4];
106106

107107
const selectableOnboardingChoices = {
108-
PERSONAL_SPEND: 'newDotPersonalSpend',
109108
MANAGE_TEAM: 'newDotManageTeam',
110109
EMPLOYER: 'newDotEmployer',
111-
CHAT_SPLIT: 'newDotSplitChat',
110+
TRACK_BUSINESS: 'newDotTrackWorkspace',
111+
TRACK_PERSONAL: 'newDotTrackPersonalWorkspace',
112112
LOOKING_AROUND: 'newDotLookingAround',
113113
} as const;
114114

115115
const backendOnboardingChoices = {
116116
ADMIN: 'newDotAdmin',
117117
SUBMIT: 'newDotSubmit',
118118
TRACK_WORKSPACE: 'newDotTrackWorkspace',
119+
PERSONAL_SPEND: 'newDotPersonalSpend',
120+
CHAT_SPLIT: 'newDotSplitChat',
119121
TEST_DRIVE_RECEIVER: 'testDriveReceiver',
120122
} as const;
121123

@@ -125,7 +127,7 @@ const onboardingChoices = {
125127
} as const;
126128

127129
const createExpenseOnboardingChoices = {
128-
PERSONAL_SPEND: selectableOnboardingChoices.PERSONAL_SPEND,
130+
PERSONAL_SPEND: backendOnboardingChoices.PERSONAL_SPEND,
129131
EMPLOYER: selectableOnboardingChoices.EMPLOYER,
130132
SUBMIT: backendOnboardingChoices.SUBMIT,
131133
} as const;

src/components/Icon/chunks/illustrations.chunk.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ import BlueShield from '@assets/images/simple-illustrations/simple-illustration_
111111
import Broom from '@assets/images/simple-illustrations/simple-illustration__broom.svg';
112112
import Building from '@assets/images/simple-illustrations/simple-illustration__building.svg';
113113
import Buildings from '@assets/images/simple-illustrations/simple-illustration__buildings.svg';
114+
import CalculatorMoney from '@assets/images/simple-illustrations/simple-illustration__calculator-money.svg';
114115
import CalendarMonthly from '@assets/images/simple-illustrations/simple-illustration__calendar-monthly.svg';
115116
import CarIce from '@assets/images/simple-illustrations/simple-illustration__car-ice.svg';
116117
import Car from '@assets/images/simple-illustrations/simple-illustration__car.svg';
@@ -361,6 +362,7 @@ const Illustrations = {
361362
Approval,
362363
Binoculars,
363364
Buildings,
365+
CalculatorMoney,
364366
CalendarMonthly,
365367
Car,
366368
ChatBubbles,

src/components/TestDrive/Modal/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import React from 'react';
22
import useOnyx from '@hooks/useOnyx';
3+
import isTrackOnboardingChoice from '@libs/OnboardingUtils';
34
import CONST from '@src/CONST';
45
import ONYXKEYS from '@src/ONYXKEYS';
56
import AdminTestDriveModal from './AdminTestDriveModal';
67
import EmployeeTestDriveModal from './EmployeeTestDriveModal';
78

89
function TestDriveModal() {
910
const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED);
10-
const isAdminTester = introSelected?.choice === CONST.ONBOARDING_CHOICES.MANAGE_TEAM || introSelected?.choice === CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE;
11+
const isAdminTester = introSelected?.choice === CONST.ONBOARDING_CHOICES.MANAGE_TEAM || isTrackOnboardingChoice(introSelected?.choice);
1112

1213
return isAdminTester ? <AdminTestDriveModal /> : <EmployeeTestDriveModal />;
1314
}

src/hooks/useAutoCreateTrackWorkspace.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,16 @@ function useAutoCreateTrackWorkspace() {
6868
const shouldCreateWorkspace = !isRestrictedPolicyCreation && !onboardingPolicyID && !hasPaidGroupAdminPolicy;
6969
const displayName = createDisplayName(session?.email ?? '', {firstName, lastName}, formatPhoneNumber);
7070

71+
const engagementChoice =
72+
onboardingPurposeSelected === CONST.ONBOARDING_CHOICES.TRACK_PERSONAL ? CONST.ONBOARDING_CHOICES.TRACK_PERSONAL : CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE;
73+
7174
const {adminsChatReportID: newAdminsChatReportID, policyID: newPolicyID} = shouldCreateWorkspace
7275
? createWorkspace({
7376
policyOwnerEmail: undefined,
7477
makeMeAdmin: true,
7578
policyName: generateDefaultWorkspaceName(session?.email ?? '', lastWorkspaceNumber, translate, displayName),
7679
policyID: generatePolicyID(),
77-
engagementChoice: CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE,
80+
engagementChoice,
7881
currency: currentUserPersonalDetails.localCurrencyCode ?? CONST.CURRENCY.USD,
7982
file: undefined,
8083
shouldAddOnboardingTasks: false,
@@ -95,8 +98,8 @@ function useAutoCreateTrackWorkspace() {
9598
let rhpVariant: OnboardingRHPVariant | undefined = isSidePanelReportSupported ? undefined : CONST.ONBOARDING_RHP_VARIANT.TRACK_EXPENSES_WITH_CONCIERGE;
9699
try {
97100
const response = await completeOnboarding({
98-
engagementChoice: CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE,
99-
onboardingMessage: onboardingMessages[CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE],
101+
engagementChoice,
102+
onboardingMessage: onboardingMessages[engagementChoice],
100103
firstName,
101104
lastName,
102105
adminsChatReportID: newAdminsChatReportID,
@@ -109,6 +112,12 @@ function useAutoCreateTrackWorkspace() {
109112

110113
if (isSidePanelReportSupported) {
111114
rhpVariant = extractRHPVariantFromResponse(response);
115+
// TRACK_PERSONAL should also navigate to concierge in RHP, same as TRACK_BUSINESS.
116+
// The backend only returns trackExpensesWithConcierge for TRACK_WORKSPACE (TRACK_BUSINESS),
117+
// so we fall back to it for TRACK_PERSONAL when the backend doesn't set it.
118+
if (!rhpVariant && onboardingPurposeSelected === CONST.ONBOARDING_CHOICES.TRACK_PERSONAL) {
119+
rhpVariant = CONST.ONBOARDING_RHP_VARIANT.TRACK_EXPENSES_WITH_CONCIERGE;
120+
}
112121
}
113122
} catch (error) {
114123
Log.warn('[useAutoCreateTrackWorkspace] Error completing onboarding', {error});

src/hooks/useSearchTypeMenuSections.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {defaultExpensifyCardSelector} from '@selectors/Card';
22
import {validTransactionDraftIDsSelector} from '@selectors/TransactionDraft';
33
import {useCallback, useEffect, useMemo, useState} from 'react';
44
import type {OnyxEntry} from 'react-native-onyx';
5+
import isTrackOnboardingChoice from '@libs/OnboardingUtils';
56
import {createTypeMenuSections, doesSearchItemMatchSort} from '@libs/SearchUIUtils';
67
import CONST from '@src/CONST';
78
import ONYXKEYS from '@src/ONYXKEYS';
@@ -42,8 +43,7 @@ const currentUserLoginAndAccountIDSelector = (session: OnyxEntry<Session>) => ({
4243
accountID: session?.accountID,
4344
});
4445

45-
const isTrackIntentUserSelector = (introSelected: OnyxEntry<IntroSelected>) =>
46-
introSelected?.choice === CONST.ONBOARDING_CHOICES.PERSONAL_SPEND || introSelected?.choice === CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE;
46+
const isTrackIntentUserSelector = (introSelected: OnyxEntry<IntroSelected>) => isTrackOnboardingChoice(introSelected?.choice);
4747

4848
type UseSearchTypeMenuSectionsParams = {
4949
hash?: number;

src/languages/de.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2932,10 +2932,10 @@ ${amount} für ${merchant} – ${date}`,
29322932
title: 'Was möchtest du heute tun?',
29332933
errorContinue: 'Bitte auf „Weiter“ drücken, um die Einrichtung abzuschließen',
29342934
errorBackButton: 'Bitte beantworte die Einrichtungsfragen, um die App verwenden zu können',
2935-
[CONST.ONBOARDING_CHOICES.EMPLOYER]: 'Von meinem Arbeitgeber zurückerstattet werden',
2935+
[CONST.ONBOARDING_CHOICES.EMPLOYER]: 'Ausgaben bei meinem Arbeitgeber einreichen',
29362936
[CONST.ONBOARDING_CHOICES.MANAGE_TEAM]: 'Verwalte die Ausgaben meines Teams',
2937-
[CONST.ONBOARDING_CHOICES.PERSONAL_SPEND]: 'Ausgaben nachverfolgen und budgetieren',
2938-
[CONST.ONBOARDING_CHOICES.CHAT_SPLIT]: 'Chatten und Ausgaben mit Freunden aufteilen',
2937+
[CONST.ONBOARDING_CHOICES.TRACK_BUSINESS]: 'Geschäftsausgaben nachverfolgen',
2938+
[CONST.ONBOARDING_CHOICES.TRACK_PERSONAL]: 'Meine persönlichen Ausgaben organisieren',
29392939
[CONST.ONBOARDING_CHOICES.LOOKING_AROUND]: 'Etwas anderes',
29402940
},
29412941
employees: {

src/languages/en.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2987,10 +2987,10 @@ const translations = {
29872987
title: 'What do you want to do today?',
29882988
errorContinue: 'Please press continue to get set up',
29892989
errorBackButton: 'Please finish the setup questions to start using the app',
2990-
[CONST.ONBOARDING_CHOICES.EMPLOYER]: 'Get paid back by my employer',
2990+
[CONST.ONBOARDING_CHOICES.EMPLOYER]: 'Submit expenses to my employer',
29912991
[CONST.ONBOARDING_CHOICES.MANAGE_TEAM]: "Manage my team's expenses",
2992-
[CONST.ONBOARDING_CHOICES.PERSONAL_SPEND]: 'Track and budget expenses',
2993-
[CONST.ONBOARDING_CHOICES.CHAT_SPLIT]: 'Chat and split expenses with friends',
2992+
[CONST.ONBOARDING_CHOICES.TRACK_BUSINESS]: 'Track expenses for my business',
2993+
[CONST.ONBOARDING_CHOICES.TRACK_PERSONAL]: 'Organize my personal spending',
29942994
[CONST.ONBOARDING_CHOICES.LOOKING_AROUND]: 'Something else',
29952995
},
29962996
employees: {

src/languages/es.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2823,10 +2823,10 @@ ${amount} para ${merchant} - ${date}`,
28232823
title: '¿Qué quieres hacer hoy?',
28242824
errorContinue: 'Por favor, haz click en continuar para configurar tu cuenta',
28252825
errorBackButton: 'Por favor, finaliza las preguntas de configuración para empezar a utilizar la aplicación',
2826-
[CONST.ONBOARDING_CHOICES.EMPLOYER]: 'Cobrar de mi empresa',
2826+
[CONST.ONBOARDING_CHOICES.EMPLOYER]: 'Enviar gastos a mi empleador',
28272827
[CONST.ONBOARDING_CHOICES.MANAGE_TEAM]: 'Gestionar los gastos de mi equipo',
2828-
[CONST.ONBOARDING_CHOICES.PERSONAL_SPEND]: 'Controlar y presupuestar gastos',
2829-
[CONST.ONBOARDING_CHOICES.CHAT_SPLIT]: 'Chatea y divide gastos con tus amigos',
2828+
[CONST.ONBOARDING_CHOICES.TRACK_BUSINESS]: 'Controlar gastos de mi negocio',
2829+
[CONST.ONBOARDING_CHOICES.TRACK_PERSONAL]: 'Organizar mis gastos personales',
28302830
[CONST.ONBOARDING_CHOICES.LOOKING_AROUND]: 'Algo más',
28312831
},
28322832
employees: {

0 commit comments

Comments
 (0)