diff --git a/src/libs/API/parameters/DeleteWorkspaceParams.ts b/src/libs/API/parameters/DeleteWorkspaceParams.ts index c535e8123d25..46df4c538179 100644 --- a/src/libs/API/parameters/DeleteWorkspaceParams.ts +++ b/src/libs/API/parameters/DeleteWorkspaceParams.ts @@ -1,5 +1,12 @@ type DeleteWorkspaceParams = { policyID: string; + /** + * Stringified JSON object with type of following structure: + * { + * [reportID]: optimisticReportActionID; + * }> + */ + reportIDToOptimisticCloseReportActionID: string; }; export default DeleteWorkspaceParams; diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 010303e87e57..773126aef45f 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -119,7 +119,6 @@ import type { PolicyCategories, PolicyCategory, Report, - ReportAction, ReportActions, Request, TaxRatesWithDefault, @@ -487,6 +486,7 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { const finallyData: OnyxUpdate[] = []; const currentTime = DateUtils.getDBTime(); + const reportIDToOptimisticCloseReportActionID: Record = {}; for (const report of reportsToArchive) { const {reportID, ownerAccountID, oldPolicyName} = report ?? {}; const isInvoiceReceiverReport = report?.invoiceReceiver && 'policyID' in report.invoiceReceiver && report.invoiceReceiver.policyID === policyID; @@ -527,7 +527,7 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, value: { - [optimisticClosedReportAction.reportActionID]: optimisticClosedReportAction as ReportAction, + [optimisticClosedReportAction.reportActionID]: optimisticClosedReportAction, }, }); @@ -549,15 +549,14 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { }, }); - // We are temporarily adding this workaround because 'DeleteWorkspace' doesn't - // support receiving the optimistic reportActions' ids for the moment. - finallyData.push({ + failureData.push({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, value: { [optimisticClosedReportAction.reportActionID]: null, }, }); + reportIDToOptimisticCloseReportActionID[reportID] = optimisticClosedReportAction.reportActionID; for (const transactionViolationKey of Object.keys(transactionViolations ?? {})) { const transactionViolation = transactionViolations?.[transactionViolationKey]; @@ -617,7 +616,7 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { }); } } - const apiParams: DeleteWorkspaceParams = {policyID}; + const apiParams: DeleteWorkspaceParams = {policyID, reportIDToOptimisticCloseReportActionID: JSON.stringify(reportIDToOptimisticCloseReportActionID)}; API.write(WRITE_COMMANDS.DELETE_WORKSPACE, apiParams, {optimisticData, finallyData, failureData});