Skip to content

Commit 5a28f38

Browse files
authored
Merge pull request Expensify#67124 from callstack-internal/pac-guerreiro/fix/66152-concierge-task-is-not-auto-completed-after-completing-test-drive-via-reports-tab
Task not auto completed after completing test drive through Reports tab
2 parents fbc5bec + 4451273 commit 5a28f38

4 files changed

Lines changed: 56 additions & 27 deletions

File tree

src/CONST/index.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6923,6 +6923,24 @@ const CONST = {
69236923
},
69246924

69256925
SIGNIN_ROUTE: '/signin',
6926+
6927+
ONBOARDING_TASK_TYPE: {
6928+
CREATE_REPORT: 'createReport',
6929+
CREATE_WORKSPACE: 'createWorkspace',
6930+
VIEW_TOUR: 'viewTour',
6931+
SETUP_CATEGORIES: 'setupCategories',
6932+
SUBMIT_EXPENSE: 'submitExpense',
6933+
TRACK_EXPENSE: 'trackExpense',
6934+
ADD_ACCOUNTING_INTEGRATION: 'addAccountingIntegration',
6935+
CONNECT_CORPORATE_CARD: 'connectCorporateCard',
6936+
INVITE_TEAM: 'inviteTeam',
6937+
SETUP_CATEGORIES_AND_TAGS: 'setupCategoriesAndTags',
6938+
SETUP_TAGS: 'setupTags',
6939+
START_CHAT: 'startChat',
6940+
SPLIT_EXPENSE: 'splitExpense',
6941+
REVIEW_WORKSPACE_SETTINGS: 'reviewWorkspaceSettings',
6942+
INVITE_ACCOUNTANT: 'inviteAccountant',
6943+
},
69266944
} as const;
69276945

69286946
type Country = keyof typeof CONST.ALL_COUNTRIES;

src/libs/ReportUtils.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10215,16 +10215,16 @@ function prepareOnboardingOnyxData(
1021510215
let createWorkspaceTaskReportID;
1021610216
const tasksData = onboardingMessage.tasks
1021710217
.filter((task) => {
10218-
if (['setupCategories', 'setupTags'].includes(task.type) && userReportedIntegration) {
10218+
if (([CONST.ONBOARDING_TASK_TYPE.SETUP_CATEGORIES, CONST.ONBOARDING_TASK_TYPE.SETUP_TAGS] as string[]).includes(task.type) && userReportedIntegration) {
1021910219
return false;
1022010220
}
1022110221

10222-
if (['addAccountingIntegration', 'setupCategoriesAndTags'].includes(task.type) && !userReportedIntegration) {
10222+
if (([CONST.ONBOARDING_TASK_TYPE.ADD_ACCOUNTING_INTEGRATION, CONST.ONBOARDING_TASK_TYPE.SETUP_CATEGORIES_AND_TAGS] as string[]).includes(task.type) && !userReportedIntegration) {
1022310223
return false;
1022410224
}
1022510225
type SkipViewTourOnboardingChoices = 'newDotSubmit' | 'newDotSplitChat' | 'newDotPersonalSpend' | 'newDotEmployer';
1022610226
if (
10227-
task.type === 'viewTour' &&
10227+
task.type === CONST.ONBOARDING_TASK_TYPE.VIEW_TOUR &&
1022810228
[
1022910229
CONST.ONBOARDING_CHOICES.EMPLOYER,
1023010230
CONST.ONBOARDING_CHOICES.PERSONAL_SPEND,
@@ -10239,7 +10239,11 @@ function prepareOnboardingOnyxData(
1023910239

1024010240
// Exclude createWorkspace and viewTour tasks from #admin room, for test drive receivers,
1024110241
// since these users already have them in concierge
10242-
if (introSelected?.choice === CONST.ONBOARDING_CHOICES.TEST_DRIVE_RECEIVER && ['createWorkspace', 'viewTour'].includes(task.type) && shouldPostTasksInAdminsRoom) {
10242+
if (
10243+
introSelected?.choice === CONST.ONBOARDING_CHOICES.TEST_DRIVE_RECEIVER &&
10244+
([CONST.ONBOARDING_TASK_TYPE.CREATE_WORKSPACE, CONST.ONBOARDING_TASK_TYPE.VIEW_TOUR] as string[]).includes(task.type) &&
10245+
shouldPostTasksInAdminsRoom
10246+
) {
1024310247
return false;
1024410248
}
1024510249

@@ -10264,10 +10268,17 @@ function prepareOnboardingOnyxData(
1026410268
const taskReportAction = buildOptimisticTaskCommentReportAction(currentTask.reportID, taskTitle, 0, `task for ${taskTitle}`, targetChatReportID, actorAccountID, index + 3);
1026510269
currentTask.parentReportActionID = taskReportAction.reportAction.reportActionID;
1026610270

10267-
const completedTaskReportAction = task.autoCompleted
10271+
let isTaskAutoCompleted: boolean = task.autoCompleted;
10272+
10273+
if (task.type === CONST.ONBOARDING_TASK_TYPE.VIEW_TOUR && onboarding?.selfTourViewed) {
10274+
// If the user has already viewed the self tour, we mark the task as auto completed
10275+
isTaskAutoCompleted = true;
10276+
}
10277+
10278+
const completedTaskReportAction = isTaskAutoCompleted
1026810279
? buildOptimisticTaskReportAction(currentTask.reportID, CONST.REPORT.ACTIONS.TYPE.TASK_COMPLETED, 'marked as complete', actorAccountID, 2)
1026910280
: null;
10270-
if (task.type === 'createWorkspace') {
10281+
if (task.type === CONST.ONBOARDING_TASK_TYPE.CREATE_WORKSPACE) {
1027110282
createWorkspaceTaskReportID = currentTask.reportID;
1027210283
}
1027310284

src/libs/actions/Welcome/OnboardingFlow.ts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ type OnboardingTaskLinks = Partial<{
5353
}>;
5454

5555
type OnboardingTask = {
56-
type: string;
56+
type: ValueOf<typeof CONST.ONBOARDING_TASK_TYPE>;
5757
autoCompleted: boolean;
5858
mediaAttributes: Record<string, string>;
5959
title: string | ((params: OnboardingTaskLinks) => string);
@@ -167,44 +167,44 @@ const getOnboardingMessages = (locale?: Locale) => {
167167
},
168168
};
169169
const createReportTask: OnboardingTask = {
170-
type: 'createReport',
170+
type: CONST.ONBOARDING_TASK_TYPE.CREATE_REPORT,
171171
autoCompleted: false,
172172
mediaAttributes: {},
173173
title: translate(resolvedLocale, 'onboarding.tasks.createReportTask.title'),
174174
description: translate(resolvedLocale, 'onboarding.tasks.createReportTask.description'),
175175
};
176176
const testDriveAdminTask: OnboardingTask = {
177-
type: 'viewTour',
177+
type: CONST.ONBOARDING_TASK_TYPE.VIEW_TOUR,
178178
autoCompleted: false,
179179
mediaAttributes: {},
180180
title: ({testDriveURL}) => translate(resolvedLocale, 'onboarding.tasks.testDriveAdminTask.title', {testDriveURL}),
181181
description: ({testDriveURL}) => translate(resolvedLocale, 'onboarding.tasks.testDriveAdminTask.description', {testDriveURL}),
182182
};
183183
const testDriveEmployeeTask: OnboardingTask = {
184-
type: 'viewTour',
184+
type: CONST.ONBOARDING_TASK_TYPE.VIEW_TOUR,
185185
autoCompleted: false,
186186
mediaAttributes: {},
187187
title: ({testDriveURL}) => translate(resolvedLocale, 'onboarding.tasks.testDriveEmployeeTask.title', {testDriveURL}),
188188
description: ({testDriveURL}) => translate(resolvedLocale, 'onboarding.tasks.testDriveEmployeeTask.description', {testDriveURL}),
189189
};
190190
const createTestDriveAdminWorkspaceTask: OnboardingTask = {
191-
type: 'createWorkspace',
191+
type: CONST.ONBOARDING_TASK_TYPE.CREATE_WORKSPACE,
192192
autoCompleted: false,
193193
mediaAttributes: {},
194194
title: ({workspaceConfirmationLink}) => translate(resolvedLocale, 'onboarding.tasks.createTestDriveAdminWorkspaceTask.title', {workspaceConfirmationLink}),
195195
description: translate(resolvedLocale, 'onboarding.tasks.createTestDriveAdminWorkspaceTask.description'),
196196
};
197197

198198
const createWorkspaceTask: OnboardingTask = {
199-
type: 'createWorkspace',
199+
type: CONST.ONBOARDING_TASK_TYPE.CREATE_WORKSPACE,
200200
autoCompleted: true,
201201
mediaAttributes: {},
202202
title: ({workspaceSettingsLink}) => translate(resolvedLocale, 'onboarding.tasks.createWorkspaceTask.title', {workspaceSettingsLink}),
203203
description: ({workspaceSettingsLink}) => translate(resolvedLocale, 'onboarding.tasks.createWorkspaceTask.description', {workspaceSettingsLink}),
204204
};
205205

206206
const setupCategoriesTask: OnboardingTask = {
207-
type: 'setupCategories',
207+
type: CONST.ONBOARDING_TASK_TYPE.SETUP_CATEGORIES,
208208
autoCompleted: false,
209209
mediaAttributes: {
210210
[`${CONST.CLOUDFRONT_URL}/videos/walkthrough-categories-v2.mp4`]: `data-expensify-thumbnail-url="${CONST.CLOUDFRONT_URL}/images/walkthrough-categories.png" data-expensify-width="1920" data-expensify-height="1080"`,
@@ -214,31 +214,31 @@ const getOnboardingMessages = (locale?: Locale) => {
214214
};
215215

216216
const combinedTrackSubmitExpenseTask: OnboardingTask = {
217-
type: 'submitExpense',
217+
type: CONST.ONBOARDING_TASK_TYPE.SUBMIT_EXPENSE,
218218
autoCompleted: false,
219219
mediaAttributes: {},
220220
title: translate(resolvedLocale, 'onboarding.tasks.combinedTrackSubmitExpenseTask.title'),
221221
description: translate(resolvedLocale, 'onboarding.tasks.combinedTrackSubmitExpenseTask.description'),
222222
};
223223

224224
const adminSubmitExpenseTask: OnboardingTask = {
225-
type: 'submitExpense',
225+
type: CONST.ONBOARDING_TASK_TYPE.SUBMIT_EXPENSE,
226226
autoCompleted: false,
227227
mediaAttributes: {},
228228
title: translate(resolvedLocale, 'onboarding.tasks.adminSubmitExpenseTask.title'),
229229
description: translate(resolvedLocale, 'onboarding.tasks.adminSubmitExpenseTask.description'),
230230
};
231231

232232
const trackExpenseTask: OnboardingTask = {
233-
type: 'trackExpense',
233+
type: CONST.ONBOARDING_TASK_TYPE.TRACK_EXPENSE,
234234
autoCompleted: false,
235235
mediaAttributes: {},
236236
title: translate(resolvedLocale, 'onboarding.tasks.trackExpenseTask.title'),
237237
description: translate(resolvedLocale, 'onboarding.tasks.trackExpenseTask.description'),
238238
};
239239

240240
const addAccountingIntegrationTask: OnboardingTask = {
241-
type: 'addAccountingIntegration',
241+
type: CONST.ONBOARDING_TASK_TYPE.ADD_ACCOUNTING_INTEGRATION,
242242
autoCompleted: false,
243243
mediaAttributes: {
244244
[`${CONST.CLOUDFRONT_URL}/${CONST.connectionsVideoPaths[CONST.ONBOARDING_ACCOUNTING_MAPPING.netsuite]}`]: `data-expensify-thumbnail-url="${CONST.CLOUDFRONT_URL}/images/walkthrough-connect_to_netsuite.png" data-expensify-width="1920" data-expensify-height="1080"`,
@@ -251,15 +251,15 @@ const getOnboardingMessages = (locale?: Locale) => {
251251
};
252252

253253
const connectCorporateCardTask: OnboardingTask = {
254-
type: 'connectCorporateCard',
254+
type: CONST.ONBOARDING_TASK_TYPE.CONNECT_CORPORATE_CARD,
255255
title: ({corporateCardLink}) => translate(resolvedLocale, 'onboarding.tasks.connectCorporateCardTask.title', {corporateCardLink}),
256256
description: ({corporateCardLink}) => translate(resolvedLocale, 'onboarding.tasks.connectCorporateCardTask.description', {corporateCardLink}),
257257
autoCompleted: false,
258258
mediaAttributes: {},
259259
};
260260

261261
const inviteTeamTask: OnboardingTask = {
262-
type: 'inviteTeam',
262+
type: CONST.ONBOARDING_TASK_TYPE.INVITE_TEAM,
263263
autoCompleted: false,
264264
mediaAttributes: {
265265
[`${CONST.CLOUDFRONT_URL}/videos/walkthrough-invite_members-v2.mp4`]: `data-expensify-thumbnail-url="${CONST.CLOUDFRONT_URL}/images/walkthrough-invite_members.png" data-expensify-width="1920" data-expensify-height="1080"`,
@@ -269,7 +269,7 @@ const getOnboardingMessages = (locale?: Locale) => {
269269
};
270270

271271
const setupCategoriesAndTags: OnboardingTask = {
272-
type: 'setupCategoriesAndTags',
272+
type: CONST.ONBOARDING_TASK_TYPE.SETUP_CATEGORIES_AND_TAGS,
273273
autoCompleted: false,
274274
mediaAttributes: {},
275275
title: ({workspaceCategoriesLink, workspaceMoreFeaturesLink}) =>
@@ -278,7 +278,7 @@ const getOnboardingMessages = (locale?: Locale) => {
278278
translate(resolvedLocale, 'onboarding.tasks.setupCategoriesAndTags.description', {workspaceCategoriesLink, workspaceAccountingLink}),
279279
};
280280
const setupTagsTask: OnboardingTask = {
281-
type: 'setupTags',
281+
type: CONST.ONBOARDING_TASK_TYPE.SETUP_TAGS,
282282
autoCompleted: false,
283283
title: ({workspaceMoreFeaturesLink}) => translate(resolvedLocale, 'onboarding.tasks.setupTagsTask.title', {workspaceMoreFeaturesLink}),
284284
description: ({workspaceMoreFeaturesLink}) => translate(resolvedLocale, 'onboarding.tasks.setupTagsTask.description', {workspaceMoreFeaturesLink}),
@@ -288,31 +288,31 @@ const getOnboardingMessages = (locale?: Locale) => {
288288
};
289289

290290
const startChatTask: OnboardingTask = {
291-
type: 'startChat',
291+
type: CONST.ONBOARDING_TASK_TYPE.START_CHAT,
292292
autoCompleted: false,
293293
mediaAttributes: {},
294294
title: translate(resolvedLocale, 'onboarding.tasks.startChatTask.title'),
295295
description: translate(resolvedLocale, 'onboarding.tasks.startChatTask.description'),
296296
};
297297

298298
const splitExpenseTask: OnboardingTask = {
299-
type: 'splitExpense',
299+
type: CONST.ONBOARDING_TASK_TYPE.SPLIT_EXPENSE,
300300
autoCompleted: false,
301301
mediaAttributes: {},
302302
title: translate(resolvedLocale, 'onboarding.tasks.splitExpenseTask.title'),
303303
description: translate(resolvedLocale, 'onboarding.tasks.splitExpenseTask.description'),
304304
};
305305

306306
const reviewWorkspaceSettingsTask: OnboardingTask = {
307-
type: 'reviewWorkspaceSettings',
307+
type: CONST.ONBOARDING_TASK_TYPE.REVIEW_WORKSPACE_SETTINGS,
308308
autoCompleted: false,
309309
mediaAttributes: {},
310310
title: ({workspaceSettingsLink}) => translate(resolvedLocale, 'onboarding.tasks.reviewWorkspaceSettingsTask.title', {workspaceSettingsLink}),
311311
description: ({workspaceSettingsLink}) => translate(resolvedLocale, 'onboarding.tasks.reviewWorkspaceSettingsTask.description', {workspaceSettingsLink}),
312312
};
313313

314314
const inviteAccountantTask: OnboardingTask = {
315-
type: 'inviteAccountant',
315+
type: CONST.ONBOARDING_TASK_TYPE.INVITE_ACCOUNTANT,
316316
autoCompleted: false,
317317
mediaAttributes: {},
318318
title: ({workspaceMembersLink}) => translate(resolvedLocale, 'onboarding.tasks.inviteAccountantTask.title', {workspaceMembersLink}),

tests/unit/ReportUtilsTest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ describe('ReportUtils', () => {
386386
message: 'This is a test',
387387
tasks: [
388388
{
389-
type: 'test',
389+
type: CONST.ONBOARDING_TASK_TYPE.CREATE_REPORT,
390390
title,
391391
description: () => '',
392392
autoCompleted: false,
@@ -415,7 +415,7 @@ describe('ReportUtils', () => {
415415
message: 'This is a test',
416416
tasks: [
417417
{
418-
type: 'test',
418+
type: CONST.ONBOARDING_TASK_TYPE.CREATE_REPORT,
419419
title: () => '',
420420
description,
421421
autoCompleted: false,

0 commit comments

Comments
 (0)