Skip to content

Commit 4c48b2c

Browse files
authored
Merge pull request Expensify#63405 from callstack-internal/pac-guerreiro/fix/62775-duplicate-onboarding-tasks
fix(testdrive): duplicate tasks in #admin for test drive receivers
2 parents 8c88036 + 5728f93 commit 4c48b2c

4 files changed

Lines changed: 40 additions & 18 deletions

File tree

src/libs/ReportUtils.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10120,6 +10120,13 @@ function prepareOnboardingOnyxData(
1012010120
) {
1012110121
return false;
1012210122
}
10123+
10124+
// Exclude createWorkspace and viewTour tasks from #admin room, for test drive receivers,
10125+
// since these users already have them in concierge
10126+
if (introSelected?.choice === CONST.ONBOARDING_CHOICES.TEST_DRIVE_RECEIVER && ['createWorkspace', 'viewTour'].includes(task.type) && shouldPostTasksInAdminsRoom) {
10127+
return false;
10128+
}
10129+
1012310130
return true;
1012410131
})
1012510132
.map((task, index) => {

src/libs/actions/IOU.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,14 +1340,6 @@ function buildOnyxDataForTestDriveIOU(testDriveIOUParams: BuildOnyxDataForTestDr
13401340
},
13411341
);
13421342

1343-
successData.push({
1344-
onyxMethod: Onyx.METHOD.MERGE,
1345-
key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${testDriveIOUParams.chatOptimisticParams.report?.reportID}`,
1346-
value: {
1347-
[textComment.reportAction.reportActionID]: null,
1348-
},
1349-
});
1350-
13511343
return {
13521344
optimisticData,
13531345
successData,

src/libs/actions/Policy/Policy.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ import type {PolicySelector} from '@pages/home/sidebar/FloatingActionButtonAndPo
8181
import * as PaymentMethods from '@userActions/PaymentMethods';
8282
import * as PersistedRequests from '@userActions/PersistedRequests';
8383
import {resolveEnableFeatureConflicts} from '@userActions/RequestConflictUtils';
84+
import {buildTaskData} from '@userActions/Task';
8485
import type {OnboardingCompanySize, OnboardingPurpose} from '@src/CONST';
8586
import CONST from '@src/CONST';
8687
import ONYXKEYS from '@src/ONYXKEYS';
@@ -2177,6 +2178,20 @@ function buildPolicyData(
21772178
failureData.push(...taskFailureData);
21782179
}
21792180

2181+
// For test drive receivers, we want to complete the createWorkspace task in concierge, instead of #admin room
2182+
if (introSelected?.choice === CONST.ONBOARDING_CHOICES.TEST_DRIVE_RECEIVER && introSelected.createWorkspace) {
2183+
const createWorkspaceTaskReport = {reportID: introSelected.createWorkspace};
2184+
const {
2185+
optimisticData: optimisticCreateWorkspaceTaskData,
2186+
successData: successCreateWorkspaceTaskData,
2187+
failureData: failureCreateWorkspaceTaskData,
2188+
} = buildTaskData(createWorkspaceTaskReport, introSelected.createWorkspace);
2189+
2190+
optimisticData.push(...optimisticCreateWorkspaceTaskData);
2191+
successData.push(...successCreateWorkspaceTaskData);
2192+
failureData.push(...failureCreateWorkspaceTaskData);
2193+
}
2194+
21802195
return {successData, optimisticData, failureData, params};
21812196
}
21822197

@@ -2203,6 +2218,7 @@ function createWorkspace(
22032218
shouldAddOnboardingTasks,
22042219
companySize,
22052220
);
2221+
22062222
API.write(WRITE_COMMANDS.CREATE_WORKSPACE, params, {optimisticData, successData, failureData});
22072223

22082224
// Publish a workspace created event if this is their first policy

src/libs/actions/Task.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -388,16 +388,7 @@ function getOutstandingChildTask(taskReport: OnyxEntry<OnyxTypes.Report>) {
388388
});
389389
}
390390

391-
/**
392-
* Complete a task
393-
*/
394-
function completeTask(taskReport: OnyxEntry<OnyxTypes.Report>, reportIDFromAction?: string): OnyxData {
395-
const taskReportID = taskReport?.reportID ?? reportIDFromAction;
396-
397-
if (!taskReportID) {
398-
return {};
399-
}
400-
391+
function buildTaskData(taskReport: OnyxEntry<OnyxTypes.Report>, taskReportID: string) {
401392
const message = `marked as complete`;
402393
const completedTaskReportAction = ReportUtils.buildOptimisticTaskReportAction(taskReportID, CONST.REPORT.ACTIONS.TYPE.TASK_COMPLETED, message);
403394
const parentReport = getParentReport(taskReport);
@@ -474,6 +465,21 @@ function completeTask(taskReport: OnyxEntry<OnyxTypes.Report>, reportIDFromActio
474465
completedTaskReportActionID: completedTaskReportAction.reportActionID,
475466
};
476467

468+
return {optimisticData, failureData, successData, parameters};
469+
}
470+
471+
/**
472+
* Complete a task
473+
*/
474+
function completeTask(taskReport: OnyxEntry<OnyxTypes.Report>, reportIDFromAction?: string): OnyxData {
475+
const taskReportID = taskReport?.reportID ?? reportIDFromAction;
476+
477+
if (!taskReportID) {
478+
return {};
479+
}
480+
481+
const {optimisticData, successData, failureData, parameters} = buildTaskData(taskReport, taskReportID);
482+
477483
playSound(SOUNDS.SUCCESS);
478484
API.write(WRITE_COMMANDS.COMPLETE_TASK, parameters, {optimisticData, successData, failureData});
479485
return {optimisticData, successData, failureData};
@@ -1335,6 +1341,7 @@ export {
13351341
setShareDestinationValue,
13361342
clearOutTaskInfo,
13371343
reopenTask,
1344+
buildTaskData,
13381345
completeTask,
13391346
clearOutTaskInfoAndNavigate,
13401347
startOutCreateTaskQuickAction,

0 commit comments

Comments
 (0)