From 56a0b1fd4910f1d4e7170091b5d39262c93e156d Mon Sep 17 00:00:00 2001 From: Shubham Agrawal Date: Sat, 7 Mar 2026 12:02:29 +0530 Subject: [PATCH 1/2] Refactor: Deprecate getPolicy (part 17) --- src/libs/ReportUtils.ts | 8 ++++---- src/libs/actions/IOU/index.ts | 8 ++------ tests/actions/IOUTest.ts | 2 +- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 5b296a00bb19..b4f3eb41490f 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -4304,19 +4304,19 @@ function getReasonAndReportActionThatRequiresAttention( } const optionReportMetadata = allReportMetadata?.[`${ONYXKEYS.COLLECTION.REPORT_METADATA}${optionOrReport.reportID}`]; + // This will be fixed as part of https://github.com/Expensify/Expensify/issues/507850 + // eslint-disable-next-line @typescript-eslint/no-deprecated + const policy = getPolicy(optionOrReport.policyID); const invoiceReceiverPolicyID = optionOrReport?.invoiceReceiver && 'policyID' in optionOrReport.invoiceReceiver ? optionOrReport.invoiceReceiver.policyID : undefined; // This will be fixed as part of https://github.com/Expensify/Expensify/issues/507850 // eslint-disable-next-line @typescript-eslint/no-deprecated const invoiceReceiverPolicy = invoiceReceiverPolicyID ? getPolicy(invoiceReceiverPolicyID) : undefined; - const iouReportActionToApproveOrPay = getIOUReportActionToApproveOrPay(optionOrReport, undefined, optionReportMetadata, invoiceReceiverPolicy); + const iouReportActionToApproveOrPay = getIOUReportActionToApproveOrPay(optionOrReport, policy, optionReportMetadata, invoiceReceiverPolicy); const iouReportID = getIOUReportIDFromReportActionPreview(iouReportActionToApproveOrPay); const transactions = getReportTransactions(iouReportID); const hasOnlyPendingTransactions = transactions.length > 0 && transactions.every((t) => isExpensifyCardTransaction(t) && isPending(t)); // Has a child report that is awaiting action (e.g. approve, pay, add bank account) from current user - // This will be fixed as part of https://github.com/Expensify/Expensify/issues/507850 - // eslint-disable-next-line @typescript-eslint/no-deprecated - const policy = getPolicy(optionOrReport.policyID); if ( (optionOrReport.hasOutstandingChildRequest === true || iouReportActionToApproveOrPay?.reportActionID) && (policy?.reimbursementChoice !== CONST.POLICY.REIMBURSEMENT_CHOICES.REIMBURSEMENT_NO || !hasOnlyPendingTransactions) diff --git a/src/libs/actions/IOU/index.ts b/src/libs/actions/IOU/index.ts index 7860da05a9bf..b09a5d0c6a25 100644 --- a/src/libs/actions/IOU/index.ts +++ b/src/libs/actions/IOU/index.ts @@ -80,7 +80,6 @@ import { getMemberAccountIDsForWorkspace, getPerDiemCustomUnit, getPerDiemRateCustomUnitRate, - getPolicy, getSubmitToAccountID, hasDependentTags, hasDynamicExternalWorkflow, @@ -10560,7 +10559,7 @@ function canSubmitReport( function getIOUReportActionToApproveOrPay( chatReport: OnyxEntry, - updatedIouReport: OnyxEntry, + policy: OnyxEntry, reportMetadata: OnyxEntry, invoiceReceiverPolicy: OnyxEntry, ): OnyxEntry { @@ -10570,10 +10569,7 @@ function getIOUReportActionToApproveOrPay( if (!action) { return false; } - const iouReport = updatedIouReport?.reportID === action.childReportID ? updatedIouReport : getReportOrDraftReport(action.childReportID); - // This will be fixed as part of https://github.com/Expensify/Expensify/issues/507850 - // eslint-disable-next-line @typescript-eslint/no-deprecated - const policy = getPolicy(iouReport?.policyID); + const iouReport = getReportOrDraftReport(action.childReportID); // Only show to the actual payer, exclude admins with bank account access const shouldShowSettlementButton = canIOUBePaid(iouReport, chatReport, policy, undefined, undefined, undefined, undefined, invoiceReceiverPolicy) || canApproveIOU(iouReport, policy, reportMetadata); diff --git a/tests/actions/IOUTest.ts b/tests/actions/IOUTest.ts index c62d668f872c..06fd82342fac 100644 --- a/tests/actions/IOUTest.ts +++ b/tests/actions/IOUTest.ts @@ -12673,7 +12673,7 @@ describe('actions/IOU', () => { await Onyx.set(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${fakeReport.reportID}`, MOCK_REPORT_ACTIONS); - expect(getIOUReportActionToApproveOrPay(fakeReport, undefined, {}, undefined)).toMatchObject(MOCK_REPORT_ACTIONS[reportID]); + expect(getIOUReportActionToApproveOrPay(fakeReport, fakePolicy, {}, undefined)).toMatchObject(MOCK_REPORT_ACTIONS[reportID]); }); }); From a493ef9bfc61d18c81fb462ebe74ae267ecc838e Mon Sep 17 00:00:00 2001 From: Shubham Agrawal Date: Fri, 13 Mar 2026 21:16:11 +0530 Subject: [PATCH 2/2] Fixed test --- tests/actions/IOUTest.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/actions/IOUTest.ts b/tests/actions/IOUTest.ts index 061d1acb2b5c..a58a139dd9af 100644 --- a/tests/actions/IOUTest.ts +++ b/tests/actions/IOUTest.ts @@ -13389,7 +13389,7 @@ describe('actions/IOU', () => { await Onyx.set(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${fakeReport.reportID}`, MOCK_REPORT_ACTIONS); - const result = getIOUReportActionWithBadge(fakeReport, undefined, {}, undefined); + const result = getIOUReportActionWithBadge(fakeReport, fakePolicy, {}, undefined); expect(result.reportAction).toMatchObject(MOCK_REPORT_ACTIONS[reportID]); expect(result.actionBadge).toBe(CONST.REPORT.ACTION_BADGE.APPROVE); }); @@ -13447,7 +13447,7 @@ describe('actions/IOU', () => { }); await waitForBatchedUpdates(); - const result = getIOUReportActionWithBadge(fakeChatReport, undefined, {}, undefined); + const result = getIOUReportActionWithBadge(fakeChatReport, fakePolicy, {}, undefined); expect(result.reportAction).toMatchObject(reportPreviewAction); expect(result.actionBadge).toBe(CONST.REPORT.ACTION_BADGE.APPROVE); }); @@ -13510,7 +13510,7 @@ describe('actions/IOU', () => { }); await waitForBatchedUpdates(); - const result = getIOUReportActionWithBadge(fakeChatReport, undefined, {}, undefined); + const result = getIOUReportActionWithBadge(fakeChatReport, fakePolicy, {}, undefined); expect(result.reportAction).toMatchObject(reportPreviewAction); expect(result.actionBadge).toBe(CONST.REPORT.ACTION_BADGE.PAY); }); @@ -13574,7 +13574,7 @@ describe('actions/IOU', () => { }); await waitForBatchedUpdates(); - const result = getIOUReportActionWithBadge(fakeChatReport, undefined, {}, undefined); + const result = getIOUReportActionWithBadge(fakeChatReport, fakePolicy, {}, undefined); expect(result.reportAction).toMatchObject(reportPreviewAction); expect(result.actionBadge).toBe(CONST.REPORT.ACTION_BADGE.SUBMIT); }); @@ -13633,7 +13633,7 @@ describe('actions/IOU', () => { }); await waitForBatchedUpdates(); - const result = getIOUReportActionWithBadge(fakeChatReport, undefined, {}, undefined); + const result = getIOUReportActionWithBadge(fakeChatReport, fakePolicy, {}, undefined); expect(result.reportAction).toBeUndefined(); expect(result.actionBadge).toBeUndefined(); });