From 77fcb85cfa938e36e9ae7fe26f878bc0c8f51adb Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:38:30 +0100 Subject: [PATCH 1/6] Fix: Scan- After uploading a corrupted file, user needs to dismiss error from 2 reports --- .../ReportActionItem/ReportPreview.tsx | 2 +- src/libs/ReportUtils.ts | 10 ++++++++ src/libs/actions/IOU.ts | 25 ------------------- 3 files changed, 11 insertions(+), 26 deletions(-) diff --git a/src/components/ReportActionItem/ReportPreview.tsx b/src/components/ReportActionItem/ReportPreview.tsx index f1aa1751dd84b..c480487d7bac3 100644 --- a/src/components/ReportActionItem/ReportPreview.tsx +++ b/src/components/ReportActionItem/ReportPreview.tsx @@ -133,7 +133,7 @@ function ReportPreview({ const hasReceipts = transactionsWithReceipts.length > 0; const isScanning = hasReceipts && areAllRequestsBeingSmartScanned; - const hasErrors = hasMissingSmartscanFields || (canUseViolations && ReportUtils.hasViolations(iouReportID, transactionViolations)); + const hasErrors = hasMissingSmartscanFields || (canUseViolations && ReportUtils.hasViolations(iouReportID, transactionViolations)) || ReportUtils.hasActionsWithErrors(iouReportID); const lastThreeTransactionsWithReceipts = transactionsWithReceipts.slice(-3); const lastThreeReceipts = lastThreeTransactionsWithReceipts.map((transaction) => ReceiptUtils.getThumbnailAndImageURIs(transaction)); diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 8dc1c9967f13b..5f8453268111b 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -5286,6 +5286,15 @@ function shouldCreateNewMoneyRequestReport(existingIOUReport: OnyxEntry return !existingIOUReport || hasIOUWaitingOnCurrentUserBankAccount(chatReport) || !canAddOrDeleteTransactions(existingIOUReport); } +/** + * Checks if report contains actions with errors + */ + +function hasActionsWithErrors(reportID: string) : boolean{ + const reportActions = ReportActionsUtils.getAllReportActions(reportID ?? ''); + return !!Object.values(reportActions ?? {}).find((action) => !isEmptyObject(action.errors)); +}; + export { getReportParticipantsTitle, isReportMessageAttachment, @@ -5497,6 +5506,7 @@ export { isJoinRequestInAdminRoom, canAddOrDeleteTransactions, shouldCreateNewMoneyRequestReport, + hasActionsWithErrors, }; export type { diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index af5c40836c745..3e28e33477a8e 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -715,31 +715,6 @@ function buildOnyxDataForMoneyRequest( pendingFields: clearedPendingFields, }, }, - { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${chatReport?.reportID}`, - value: { - ...(isNewChatReport - ? { - [chatCreatedAction.reportActionID]: { - // Disabling this line since transaction.filename can be an empty string - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - errors: getReceiptError(transaction?.receipt, transaction.filename || transaction.receipt?.filename, isScanRequest), - }, - [reportPreviewAction.reportActionID]: { - errors: ErrorUtils.getMicroSecondOnyxError(null), - }, - } - : { - [reportPreviewAction.reportActionID]: { - created: reportPreviewAction.created, - // Disabling this line since transaction.filename can be an empty string - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - errors: getReceiptError(transaction?.receipt, transaction.filename || transaction.receipt?.filename, isScanRequest), - }, - }), - }, - }, { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${iouReport.reportID}`, From cdf5dbafd7f1540a9ebbbb8f1375813e26034809 Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Fri, 15 Mar 2024 23:50:47 +0100 Subject: [PATCH 2/6] fix lint error --- src/components/ReportActionItem/ReportPreview.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/ReportActionItem/ReportPreview.tsx b/src/components/ReportActionItem/ReportPreview.tsx index c480487d7bac3..d183d27fefb89 100644 --- a/src/components/ReportActionItem/ReportPreview.tsx +++ b/src/components/ReportActionItem/ReportPreview.tsx @@ -133,6 +133,7 @@ function ReportPreview({ const hasReceipts = transactionsWithReceipts.length > 0; const isScanning = hasReceipts && areAllRequestsBeingSmartScanned; + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const hasErrors = hasMissingSmartscanFields || (canUseViolations && ReportUtils.hasViolations(iouReportID, transactionViolations)) || ReportUtils.hasActionsWithErrors(iouReportID); const lastThreeTransactionsWithReceipts = transactionsWithReceipts.slice(-3); const lastThreeReceipts = lastThreeTransactionsWithReceipts.map((transaction) => ReceiptUtils.getThumbnailAndImageURIs(transaction)); From cc750d6e6bd29d5d948440354958d23f861d9c20 Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Sat, 16 Mar 2024 00:48:35 +0100 Subject: [PATCH 3/6] prettier --- src/libs/ReportUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 63ec2e18ec2dc..ef9b1b3a0140b 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -5318,10 +5318,10 @@ function shouldCreateNewMoneyRequestReport(existingIOUReport: OnyxEntry * Checks if report contains actions with errors */ -function hasActionsWithErrors(reportID: string) : boolean{ +function hasActionsWithErrors(reportID: string): boolean { const reportActions = ReportActionsUtils.getAllReportActions(reportID ?? ''); return !!Object.values(reportActions ?? {}).find((action) => !isEmptyObject(action.errors)); -}; +} export { getReportParticipantsTitle, From 66b810b3ffbb084d6d71735bb235fb79efe392d2 Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Wed, 20 Mar 2024 00:03:16 +0100 Subject: [PATCH 4/6] use some instead of find --- 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 4ac9be6b878f8..8d0de14427979 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -5337,7 +5337,7 @@ function shouldCreateNewMoneyRequestReport(existingIOUReport: OnyxEntry function hasActionsWithErrors(reportID: string): boolean { const reportActions = ReportActionsUtils.getAllReportActions(reportID ?? ''); - return !!Object.values(reportActions ?? {}).find((action) => !isEmptyObject(action.errors)); + return !!Object.values(reportActions ?? {}).some((action) => !isEmptyObject(action.errors)); } export { From 77cca225ae39ebc4c9db0414c75446bdc32c71d5 Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Wed, 20 Mar 2024 00:03:52 +0100 Subject: [PATCH 5/6] use some instead of find --- 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 8d0de14427979..615a0b8ade07c 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -5337,7 +5337,7 @@ function shouldCreateNewMoneyRequestReport(existingIOUReport: OnyxEntry function hasActionsWithErrors(reportID: string): boolean { const reportActions = ReportActionsUtils.getAllReportActions(reportID ?? ''); - return !!Object.values(reportActions ?? {}).some((action) => !isEmptyObject(action.errors)); + return Object.values(reportActions ?? {}).some((action) => !isEmptyObject(action.errors)); } export { From 5d0e6b45071c718181e74ff475338b9c4af8dd34 Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Wed, 20 Mar 2024 10:37:17 +0100 Subject: [PATCH 6/6] Update src/libs/ReportUtils.ts Co-authored-by: Monil Bhavsar --- src/libs/ReportUtils.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 615a0b8ade07c..b5351e13ea6cb 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -5334,7 +5334,6 @@ function shouldCreateNewMoneyRequestReport(existingIOUReport: OnyxEntry /** * Checks if report contains actions with errors */ - function hasActionsWithErrors(reportID: string): boolean { const reportActions = ReportActionsUtils.getAllReportActions(reportID ?? ''); return Object.values(reportActions ?? {}).some((action) => !isEmptyObject(action.errors));