From d0194203eb6225d34167fcd0529538548b04d696 Mon Sep 17 00:00:00 2001 From: daledah Date: Fri, 11 Oct 2024 11:06:56 +0700 Subject: [PATCH 1/3] fix: archive invoice room when deleting workspace --- src/libs/actions/Policy/Policy.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index ec37b2c4e1fa..788ee2ed5d6a 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -310,7 +310,9 @@ function deleteWorkspace(policyID: string, policyName: string) { ]; const reportsToArchive = Object.values(ReportConnection.getAllReports() ?? {}).filter( - (report) => report?.policyID === policyID && (ReportUtils.isChatRoom(report) || ReportUtils.isPolicyExpenseChat(report) || ReportUtils.isTaskReport(report)), + (report) => + (report?.policyID === policyID || (report?.invoiceReceiver && 'policyID' in report.invoiceReceiver && report.invoiceReceiver.policyID === policyID)) && + (ReportUtils.isChatRoom(report) || ReportUtils.isPolicyExpenseChat(report) || ReportUtils.isTaskReport(report)), ); const finallyData: OnyxUpdate[] = []; const currentTime = DateUtils.getDBTime(); From 4cba8173254fba4496e632ed74fa85555e04deea Mon Sep 17 00:00:00 2001 From: daledah Date: Mon, 14 Oct 2024 09:00:39 +0700 Subject: [PATCH 2/3] fix: move logics to util function --- src/libs/ReportUtils.ts | 11 +++++++++-- src/libs/actions/Policy/Policy.ts | 4 +--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index e9108956cb1d..e54bfbb3c7df 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1251,13 +1251,19 @@ function findSelfDMReportID(): string | undefined { return selfDMReport?.reportID; } +function isPolicyRelatedReport(report: OnyxEntry, policyID?: string) { + return report?.policyID === policyID || !!(report?.invoiceReceiver && 'policyID' in report.invoiceReceiver && report.invoiceReceiver.policyID === policyID); +} + /** * Checks if the supplied report belongs to workspace based on the provided params. If the report's policyID is _FAKE_ or has no value, it means this report is a DM. * In this case report and workspace members must be compared to determine whether the report belongs to the workspace. */ function doesReportBelongToWorkspace(report: OnyxEntry, policyMemberAccountIDs: number[], policyID?: string) { - const isPolicyRelatedReport = report?.policyID === policyID || !!(report?.invoiceReceiver && 'policyID' in report.invoiceReceiver && report.invoiceReceiver.policyID === policyID); - return isConciergeChatReport(report) || (report?.policyID === CONST.POLICY.ID_FAKE || !report?.policyID ? hasParticipantInArray(report, policyMemberAccountIDs) : isPolicyRelatedReport); + return ( + isConciergeChatReport(report) || + (report?.policyID === CONST.POLICY.ID_FAKE || !report?.policyID ? hasParticipantInArray(report, policyMemberAccountIDs) : isPolicyRelatedReport(report, policyID)) + ); } /** @@ -8421,6 +8427,7 @@ export { hasMissingInvoiceBankAccount, reasonForReportToBeInOptionList, getReasonAndReportActionThatRequiresAttention, + isPolicyRelatedReport, }; export type { diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 788ee2ed5d6a..d13a2432305b 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -310,9 +310,7 @@ function deleteWorkspace(policyID: string, policyName: string) { ]; const reportsToArchive = Object.values(ReportConnection.getAllReports() ?? {}).filter( - (report) => - (report?.policyID === policyID || (report?.invoiceReceiver && 'policyID' in report.invoiceReceiver && report.invoiceReceiver.policyID === policyID)) && - (ReportUtils.isChatRoom(report) || ReportUtils.isPolicyExpenseChat(report) || ReportUtils.isTaskReport(report)), + (report) => ReportUtils.isPolicyRelatedReport(report, policyID) && (ReportUtils.isChatRoom(report) || ReportUtils.isPolicyExpenseChat(report) || ReportUtils.isTaskReport(report)), ); const finallyData: OnyxUpdate[] = []; const currentTime = DateUtils.getDBTime(); From b10e7039e0de73257c8166ebb802172bff6b4eac Mon Sep 17 00:00:00 2001 From: daledah Date: Mon, 14 Oct 2024 10:55:28 +0700 Subject: [PATCH 3/3] feat: add description to function --- src/libs/ReportUtils.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index e54bfbb3c7df..a7b3392d667b 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1251,6 +1251,9 @@ function findSelfDMReportID(): string | undefined { return selfDMReport?.reportID; } +/** + * Checks if the supplied report is from a policy or is an invoice report from a policy + */ function isPolicyRelatedReport(report: OnyxEntry, policyID?: string) { return report?.policyID === policyID || !!(report?.invoiceReceiver && 'policyID' in report.invoiceReceiver && report.invoiceReceiver.policyID === policyID); }