From 33b048d57857d06d689fa072463e56dad163bc03 Mon Sep 17 00:00:00 2001 From: tienifr Date: Tue, 14 Nov 2023 17:39:24 +0700 Subject: [PATCH 1/6] fix: empty transaction data on open app --- src/libs/ReportUtils.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index a18594905b55..a3d613be8543 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -1757,9 +1757,10 @@ function hasMissingSmartscanFields(iouReportID) { * Given a parent IOU report action get report name for the LHN. * * @param {Object} reportAction + * @param {String} parentReportActionMessage * @returns {String} */ -function getTransactionReportName(reportAction) { +function getTransactionReportName(reportAction, parentReportActionMessage) { if (ReportActionsUtils.isReversedTransaction(reportAction)) { return Localize.translateLocal('parentReportAction.reversedTransaction'); } @@ -1769,6 +1770,9 @@ function getTransactionReportName(reportAction) { } const transaction = TransactionUtils.getLinkedTransaction(reportAction); + if (_.isEmpty(transaction)) { + return parentReportActionMessage; + } if (TransactionUtils.hasReceipt(transaction) && TransactionUtils.isReceiptBeingScanned(transaction)) { return Localize.translateLocal('iou.receiptScanning'); } @@ -2077,12 +2081,16 @@ function getReportName(report, policy = undefined) { let formattedName; const parentReportAction = ReportActionsUtils.getParentReportAction(report); if (isChatThread(report)) { + if (_.isEmpty(parentReportAction)) { + return Localize.translateLocal('iou.request'); + } + + const parentReportActionMessage = lodashGet(parentReportAction, ['message', 0, 'text'], '').replace(/(\r\n|\n|\r)/gm, ' '); if (ReportActionsUtils.isTransactionThread(parentReportAction)) { - return getTransactionReportName(parentReportAction); + return getTransactionReportName(parentReportAction, parentReportActionMessage); } const isAttachment = ReportActionsUtils.isReportActionAttachment(parentReportAction); - const parentReportActionMessage = lodashGet(parentReportAction, ['message', 0, 'text'], '').replace(/(\r\n|\n|\r)/gm, ' '); if (isAttachment && parentReportActionMessage) { return `[${Localize.translateLocal('common.attachment')}]`; } From bbe5c5295a742edf817ac2b83a5c85e8152530e0 Mon Sep 17 00:00:00 2001 From: tienifr Date: Tue, 14 Nov 2023 19:35:21 +0700 Subject: [PATCH 2/6] get message from parent report action --- src/libs/ReportUtils.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index a3d613be8543..bdef6b070dfb 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -1757,10 +1757,9 @@ function hasMissingSmartscanFields(iouReportID) { * Given a parent IOU report action get report name for the LHN. * * @param {Object} reportAction - * @param {String} parentReportActionMessage * @returns {String} */ -function getTransactionReportName(reportAction, parentReportActionMessage) { +function getTransactionReportName(reportAction) { if (ReportActionsUtils.isReversedTransaction(reportAction)) { return Localize.translateLocal('parentReportAction.reversedTransaction'); } @@ -1771,7 +1770,7 @@ function getTransactionReportName(reportAction, parentReportActionMessage) { const transaction = TransactionUtils.getLinkedTransaction(reportAction); if (_.isEmpty(transaction)) { - return parentReportActionMessage; + return lodashGet(reportAction, ['message', 0, 'text'], '').replace(/(\r\n|\n|\r)/gm, ' '); } if (TransactionUtils.hasReceipt(transaction) && TransactionUtils.isReceiptBeingScanned(transaction)) { return Localize.translateLocal('iou.receiptScanning'); @@ -2081,16 +2080,15 @@ function getReportName(report, policy = undefined) { let formattedName; const parentReportAction = ReportActionsUtils.getParentReportAction(report); if (isChatThread(report)) { - if (_.isEmpty(parentReportAction)) { - return Localize.translateLocal('iou.request'); - } - - const parentReportActionMessage = lodashGet(parentReportAction, ['message', 0, 'text'], '').replace(/(\r\n|\n|\r)/gm, ' '); if (ReportActionsUtils.isTransactionThread(parentReportAction)) { - return getTransactionReportName(parentReportAction, parentReportActionMessage); + if (_.isEmpty(parentReportAction)) { + return Localize.translateLocal('iou.request'); + } + return getTransactionReportName(parentReportAction); } const isAttachment = ReportActionsUtils.isReportActionAttachment(parentReportAction); + const parentReportActionMessage = lodashGet(parentReportAction, ['message', 0, 'text'], '').replace(/(\r\n|\n|\r)/gm, ' '); if (isAttachment && parentReportActionMessage) { return `[${Localize.translateLocal('common.attachment')}]`; } From 4deb7a4b46b266988dda8639f5c3f995c20f01b6 Mon Sep 17 00:00:00 2001 From: tienifr Date: Wed, 22 Nov 2023 16:25:58 +0700 Subject: [PATCH 3/6] add comment --- src/libs/ReportUtils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index 39afb8a5a99e..281547d6ec03 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -1815,6 +1815,7 @@ function getTransactionReportName(reportAction) { } const transaction = TransactionUtils.getLinkedTransaction(reportAction); + // Transaction data might be empty on app's first load, if so we fallback to parent report action's message if (_.isEmpty(transaction)) { return lodashGet(reportAction, ['message', 0, 'text'], '').replace(/(\r\n|\n|\r)/gm, ' '); } From 6478fc5d650f83b4ff70272532812e145cbca435 Mon Sep 17 00:00:00 2001 From: tienifr Date: Tue, 28 Nov 2023 02:19:43 +0700 Subject: [PATCH 4/6] fix typescript lint --- src/libs/ReportUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 07e93053f364..caf120723c76 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1859,7 +1859,7 @@ function getTransactionReportName(reportAction: OnyxEntry): string const transaction = TransactionUtils.getLinkedTransaction(reportAction); if (!isNotEmptyObject(transaction)) { // Transaction data might be empty on app's first load, if so we fallback to parent report action's message - return reportAction?.message?.[0]?.text?.replace(/(\r\n|\n|\r)/gm, ' ') || Localize.translateLocal('iou.request'); + return reportAction?.message?.[0]?.text?.replace(/(\r\n|\n|\r)/gm, ' ') ?? Localize.translateLocal('iou.request'); } if (TransactionUtils.hasReceipt(transaction) && TransactionUtils.isReceiptBeingScanned(transaction)) { return Localize.translateLocal('iou.receiptScanning'); From e9fa9ff6ae8d113c53c69d2c835bdb930af27426 Mon Sep 17 00:00:00 2001 From: Tienifr <113963320+tienifr@users.noreply.github.com> Date: Wed, 29 Nov 2023 03:35:29 +0700 Subject: [PATCH 5/6] Fallback to Request for empty transaction Co-authored-by: Fedi Rajhi --- src/libs/ReportUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index caf120723c76..b131d29414f5 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1859,7 +1859,7 @@ function getTransactionReportName(reportAction: OnyxEntry): string const transaction = TransactionUtils.getLinkedTransaction(reportAction); if (!isNotEmptyObject(transaction)) { // Transaction data might be empty on app's first load, if so we fallback to parent report action's message - return reportAction?.message?.[0]?.text?.replace(/(\r\n|\n|\r)/gm, ' ') ?? Localize.translateLocal('iou.request'); + return Localize.translateLocal('iou.request'); } if (TransactionUtils.hasReceipt(transaction) && TransactionUtils.isReceiptBeingScanned(transaction)) { return Localize.translateLocal('iou.receiptScanning'); From ad6fb7606220a22bfa8143c41b5a41bc1fc42c6c Mon Sep 17 00:00:00 2001 From: tienifr Date: Wed, 29 Nov 2023 03:37:16 +0700 Subject: [PATCH 6/6] modify comment --- src/libs/ReportUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index b131d29414f5..c3c0d5f0c35e 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1858,7 +1858,7 @@ function getTransactionReportName(reportAction: OnyxEntry): string const transaction = TransactionUtils.getLinkedTransaction(reportAction); if (!isNotEmptyObject(transaction)) { - // Transaction data might be empty on app's first load, if so we fallback to parent report action's message + // Transaction data might be empty on app's first load, if so we fallback to Request return Localize.translateLocal('iou.request'); } if (TransactionUtils.hasReceipt(transaction) && TransactionUtils.isReceiptBeingScanned(transaction)) {