From ef81e5f1222e8178f17a6cfc824f1eb4c0c82ce9 Mon Sep 17 00:00:00 2001 From: Aldo Canepa Date: Mon, 1 Dec 2025 16:46:25 -0300 Subject: [PATCH 1/4] Send optimistic CLOSED reportAction ids --- src/libs/API/parameters/DeleteWorkspaceParams.ts | 7 +++++++ src/libs/actions/Policy/Policy.ts | 11 ++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/libs/API/parameters/DeleteWorkspaceParams.ts b/src/libs/API/parameters/DeleteWorkspaceParams.ts index c535e8123d25..876bf5cdad8b 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; + * }> + */ + reportIDToOptimisticClosedReportActionID: string; }; export default DeleteWorkspaceParams; diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 30b62b5c2dd1..47c1cdf6dcd5 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -486,6 +486,8 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { const finallyData: OnyxUpdate[] = []; const currentTime = DateUtils.getDBTime(); + const reportIDToOptimisticClosedReportActionID: Record = {}; + // eslint-disable-next-line unicorn/no-array-for-each reportsToArchive.forEach((report) => { const {reportID, ownerAccountID, oldPolicyName} = report ?? {}; @@ -527,7 +529,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 +551,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, }, }); + reportIDToOptimisticClosedReportActionID[reportID] = optimisticClosedReportAction.reportActionID; for (const transactionViolationKey of Object.keys(transactionViolations ?? {})) { const transactionViolation = transactionViolations?.[transactionViolationKey]; @@ -619,7 +620,7 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { } }); - const apiParams: DeleteWorkspaceParams = {policyID}; + const apiParams: DeleteWorkspaceParams = {policyID, reportIDToOptimisticClosedReportActionID: JSON.stringify(reportIDToOptimisticClosedReportActionID)}; API.write(WRITE_COMMANDS.DELETE_WORKSPACE, apiParams, {optimisticData, finallyData, failureData}); From 54529af33cb72e48a389cb72946fb3b7c7740478 Mon Sep 17 00:00:00 2001 From: Aldo Canepa Date: Mon, 1 Dec 2025 21:13:04 -0300 Subject: [PATCH 2/4] Rename parameter --- src/libs/API/parameters/DeleteWorkspaceParams.ts | 2 +- src/libs/actions/Policy/Policy.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/API/parameters/DeleteWorkspaceParams.ts b/src/libs/API/parameters/DeleteWorkspaceParams.ts index 876bf5cdad8b..b678586621da 100644 --- a/src/libs/API/parameters/DeleteWorkspaceParams.ts +++ b/src/libs/API/parameters/DeleteWorkspaceParams.ts @@ -6,7 +6,7 @@ type DeleteWorkspaceParams = { * [reportID]: optimisticReportActionID; * }> */ - reportIDToOptimisticClosedReportActionID: string; + optimisticReportActions: string; }; export default DeleteWorkspaceParams; diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 47c1cdf6dcd5..db1d611f2857 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -620,7 +620,7 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { } }); - const apiParams: DeleteWorkspaceParams = {policyID, reportIDToOptimisticClosedReportActionID: JSON.stringify(reportIDToOptimisticClosedReportActionID)}; + const apiParams: DeleteWorkspaceParams = {policyID, optimisticReportActions: JSON.stringify(reportIDToOptimisticClosedReportActionID)}; API.write(WRITE_COMMANDS.DELETE_WORKSPACE, apiParams, {optimisticData, finallyData, failureData}); From 4a0a3477af1294e91af146f6ba933334bf770bfa Mon Sep 17 00:00:00 2001 From: Aldo Canepa Date: Wed, 3 Dec 2025 11:23:27 -0300 Subject: [PATCH 3/4] Update param name --- src/libs/API/parameters/DeleteWorkspaceParams.ts | 2 +- src/libs/actions/Policy/Policy.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libs/API/parameters/DeleteWorkspaceParams.ts b/src/libs/API/parameters/DeleteWorkspaceParams.ts index b678586621da..46df4c538179 100644 --- a/src/libs/API/parameters/DeleteWorkspaceParams.ts +++ b/src/libs/API/parameters/DeleteWorkspaceParams.ts @@ -6,7 +6,7 @@ type DeleteWorkspaceParams = { * [reportID]: optimisticReportActionID; * }> */ - optimisticReportActions: string; + reportIDToOptimisticCloseReportActionID: string; }; export default DeleteWorkspaceParams; diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index fa08a569f231..6094b0086b83 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -486,7 +486,7 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { const finallyData: OnyxUpdate[] = []; const currentTime = DateUtils.getDBTime(); - const reportIDToOptimisticClosedReportActionID: Record = {}; + const reportIDToOptimisticCloseReportActionID: Record = {}; // eslint-disable-next-line unicorn/no-array-for-each reportsToArchive.forEach((report) => { @@ -558,7 +558,7 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { [optimisticClosedReportAction.reportActionID]: null, }, }); - reportIDToOptimisticClosedReportActionID[reportID] = optimisticClosedReportAction.reportActionID; + reportIDToOptimisticCloseReportActionID[reportID] = optimisticClosedReportAction.reportActionID; for (const transactionViolationKey of Object.keys(transactionViolations ?? {})) { const transactionViolation = transactionViolations?.[transactionViolationKey]; @@ -620,7 +620,7 @@ function deleteWorkspace(params: DeleteWorkspaceActionParams) { } }); - const apiParams: DeleteWorkspaceParams = {policyID, optimisticReportActions: JSON.stringify(reportIDToOptimisticClosedReportActionID)}; + const apiParams: DeleteWorkspaceParams = {policyID, reportIDToOptimisticCloseReportActionID: JSON.stringify(reportIDToOptimisticCloseReportActionID)}; API.write(WRITE_COMMANDS.DELETE_WORKSPACE, apiParams, {optimisticData, finallyData, failureData}); From e6bbcdeb3acdeafc9bef8962a64c0f8fd13c0af4 Mon Sep 17 00:00:00 2001 From: Aldo Canepa Date: Fri, 12 Dec 2025 11:54:16 -0300 Subject: [PATCH 4/4] Remove unused import --- src/libs/actions/Policy/Policy.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 809876029938..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,