diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 5ec8413d1f571..dcf77e9316866 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -9822,6 +9822,13 @@ function prepareOnboardingOnyxData( ) { return false; } + + // Exclude createWorkspace and viewTour tasks from #admin room, for test drive receivers, + // since these users already have them in concierge + if (introSelected?.choice === CONST.ONBOARDING_CHOICES.TEST_DRIVE_RECEIVER && ['createWorkspace', 'viewTour'].includes(task.type) && shouldPostTasksInAdminsRoom) { + return false; + } + return true; }) .map((task, index) => { diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 75b2d76270ee7..0e82fcbf0d7ae 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -1343,14 +1343,6 @@ function buildOnyxDataForTestDriveIOU(testDriveIOUParams: BuildOnyxDataForTestDr }, ); - successData.push({ - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${testDriveIOUParams.chatOptimisticParams.report?.reportID}`, - value: { - [textComment.reportAction.reportActionID]: null, - }, - }); - return { optimisticData, successData, diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 19a439ed3c1fb..bc0ecbee79402 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -81,6 +81,7 @@ import type {PolicySelector} from '@pages/home/sidebar/FloatingActionButtonAndPo import * as PaymentMethods from '@userActions/PaymentMethods'; import * as PersistedRequests from '@userActions/PersistedRequests'; import {resolveEnableFeatureConflicts} from '@userActions/RequestConflictUtils'; +import {buildTaskData} from '@userActions/Task'; import type {OnboardingCompanySize, OnboardingPurpose} from '@src/CONST'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -2153,6 +2154,20 @@ function buildPolicyData( failureData.push(...taskFailureData); } + // For test drive receivers, we want to complete the createWorkspace task in concierge, instead of #admin room + if (introSelected?.choice === CONST.ONBOARDING_CHOICES.TEST_DRIVE_RECEIVER && introSelected.createWorkspace) { + const createWorkspaceTaskReport = {reportID: introSelected.createWorkspace}; + const { + optimisticData: optimisticCreateWorkspaceTaskData, + successData: successCreateWorkspaceTaskData, + failureData: failureCreateWorkspaceTaskData, + } = buildTaskData(createWorkspaceTaskReport, introSelected.createWorkspace); + + optimisticData.push(...optimisticCreateWorkspaceTaskData); + successData.push(...successCreateWorkspaceTaskData); + failureData.push(...failureCreateWorkspaceTaskData); + } + return {successData, optimisticData, failureData, params}; } @@ -2179,6 +2194,7 @@ function createWorkspace( shouldAddOnboardingTasks, companySize, ); + API.write(WRITE_COMMANDS.CREATE_WORKSPACE, params, {optimisticData, successData, failureData}); // Publish a workspace created event if this is their first policy diff --git a/src/libs/actions/Task.ts b/src/libs/actions/Task.ts index c953698a5cb56..f2809d2997fd9 100644 --- a/src/libs/actions/Task.ts +++ b/src/libs/actions/Task.ts @@ -388,16 +388,7 @@ function getOutstandingChildTask(taskReport: OnyxEntry) { }); } -/** - * Complete a task - */ -function completeTask(taskReport: OnyxEntry, reportIDFromAction?: string): OnyxData { - const taskReportID = taskReport?.reportID ?? reportIDFromAction; - - if (!taskReportID) { - return {}; - } - +function buildTaskData(taskReport: OnyxEntry, taskReportID: string) { const message = `marked as complete`; const completedTaskReportAction = ReportUtils.buildOptimisticTaskReportAction(taskReportID, CONST.REPORT.ACTIONS.TYPE.TASK_COMPLETED, message); const parentReport = getParentReport(taskReport); @@ -474,6 +465,21 @@ function completeTask(taskReport: OnyxEntry, reportIDFromActio completedTaskReportActionID: completedTaskReportAction.reportActionID, }; + return {optimisticData, failureData, successData, parameters}; +} + +/** + * Complete a task + */ +function completeTask(taskReport: OnyxEntry, reportIDFromAction?: string): OnyxData { + const taskReportID = taskReport?.reportID ?? reportIDFromAction; + + if (!taskReportID) { + return {}; + } + + const {optimisticData, successData, failureData, parameters} = buildTaskData(taskReport, taskReportID); + playSound(SOUNDS.SUCCESS); API.write(WRITE_COMMANDS.COMPLETE_TASK, parameters, {optimisticData, successData, failureData}); return {optimisticData, successData, failureData}; @@ -1335,6 +1341,7 @@ export { setShareDestinationValue, clearOutTaskInfo, reopenTask, + buildTaskData, completeTask, clearOutTaskInfoAndNavigate, startOutCreateTaskQuickAction,