From f3f2f51e75a93da2e155f3ef502706c98ecb47ed Mon Sep 17 00:00:00 2001 From: Jakub Korytko Date: Mon, 19 May 2025 10:42:31 +0200 Subject: [PATCH 1/3] Revert "Revert "Filter out report previews that shouldn't be shown in ReportPreview & MoneyRequestReportView"" This reverts commit 41108ae6664bcbd07e2af95a201e41247be62c7f. --- .../MoneyRequestReportView/MoneyRequestReportView.tsx | 7 ++++--- src/libs/ReportActionsUtils.ts | 10 ++++++++++ src/pages/home/ReportScreen.tsx | 11 +++-------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/components/MoneyRequestReportView/MoneyRequestReportView.tsx b/src/components/MoneyRequestReportView/MoneyRequestReportView.tsx index 8c4e1d452ea8..64c2c890146d 100644 --- a/src/components/MoneyRequestReportView/MoneyRequestReportView.tsx +++ b/src/components/MoneyRequestReportView/MoneyRequestReportView.tsx @@ -18,7 +18,7 @@ import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import Log from '@libs/Log'; import {selectAllTransactionsForReport, shouldDisplayReportTableView} from '@libs/MoneyRequestReportUtils'; import navigationRef from '@libs/Navigation/navigationRef'; -import {getOneTransactionThreadReportID, isDeletedParentAction, isMoneyRequestAction} from '@libs/ReportActionsUtils'; +import {getFilteredReportActionsForReportView, getOneTransactionThreadReportID, isMoneyRequestAction} from '@libs/ReportActionsUtils'; import {canEditReportAction, getReportOfflinePendingActionAndErrors, isReportTransactionThread} from '@libs/ReportUtils'; import {buildCannedSearchQuery} from '@libs/SearchQueryUtils'; import Navigation from '@navigation/Navigation'; @@ -95,8 +95,9 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe const [isComposerFullSize] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_IS_COMPOSER_FULL_SIZE}${reportID}`, {initialValue: false, canBeMissing: true}); const {reportPendingAction, reportErrors} = getReportOfflinePendingActionAndErrors(report); - const {reportActions: reportActionsWithDeletedExpenses, hasNewerActions, hasOlderActions} = usePaginatedReportActions(reportID); - const reportActions = reportActionsWithDeletedExpenses.filter((value) => !isDeletedParentAction(value)); + const {reportActions: unfilteredReportActions, hasNewerActions, hasOlderActions} = usePaginatedReportActions(reportID); + const reportActions = getFilteredReportActionsForReportView(unfilteredReportActions); + const transactionThreadReportID = getOneTransactionThreadReportID(reportID, reportActions ?? [], isOffline); const [transactions = []] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, { diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 4211061e3d91..240d8a1ee5a6 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -1012,6 +1012,15 @@ function filterOutDeprecatedReportActions(reportActions: OnyxEntry entry[1]); } +/** + * Helper for filtering out Report Actions that are either: + * - ReportPreview with shouldShow set to false + * - Action with parent action deleted + */ +function getFilteredReportActionsForReportView(actions: ReportAction[]) { + return actions.filter((action) => !isDeletedParentAction(action) && (!isReportPreviewAction(action) || action.shouldShow)); +} + /** * This method returns the report actions that are ready for display in the ReportActionsView. * The report actions need to be sorted by created timestamp first, and reportActionID second @@ -2533,6 +2542,7 @@ export { getRemovedConnectionMessage, getActionableJoinRequestPendingReportAction, getReportActionsLength, + getFilteredReportActionsForReportView, wasMessageReceivedWhileOffline, shouldShowAddMissingDetails, getJoinRequestMessage, diff --git a/src/pages/home/ReportScreen.tsx b/src/pages/home/ReportScreen.tsx index 0b058a18dd52..e20711e7873b 100644 --- a/src/pages/home/ReportScreen.tsx +++ b/src/pages/home/ReportScreen.tsx @@ -40,6 +40,7 @@ import {getPersonalDetailsForAccountIDs} from '@libs/OptionsListUtils'; import {getDisplayNameOrDefault} from '@libs/PersonalDetailsUtils'; import { getCombinedReportActions, + getFilteredReportActionsForReportView, getOneTransactionThreadReportID, isCreatedAction, isDeletedParentAction, @@ -266,14 +267,8 @@ function ReportScreen({route, navigation}: ReportScreenProps) { const [currentUserAccountID = -1] = useOnyx(ONYXKEYS.SESSION, {selector: (value) => value?.accountID, canBeMissing: false}); const [currentUserEmail] = useOnyx(ONYXKEYS.SESSION, {selector: (value) => value?.email, canBeMissing: false}); const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP, {canBeMissing: true}); - const { - reportActions: reportActionsWithDeletedExpenses, - linkedAction, - sortedAllReportActions, - hasNewerActions, - hasOlderActions, - } = usePaginatedReportActions(reportID, reportActionIDFromRoute); - const reportActions = reportActionsWithDeletedExpenses.filter((value) => !isDeletedParentAction(value)); + const {reportActions: unfilteredReportActions, linkedAction, sortedAllReportActions, hasNewerActions, hasOlderActions} = usePaginatedReportActions(reportID, reportActionIDFromRoute); + const reportActions = getFilteredReportActionsForReportView(unfilteredReportActions); const [isBannerVisible, setIsBannerVisible] = useState(true); const [scrollPosition, setScrollPosition] = useState({}); From 5e3fada1213105d3860520de0c9890b1c9e43332 Mon Sep 17 00:00:00 2001 From: Jakub Korytko Date: Mon, 19 May 2025 11:10:55 +0200 Subject: [PATCH 2/3] Correct PR 62002 & 61777 --- src/libs/ReportActionsUtils.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 240d8a1ee5a6..934709be68c7 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -1014,11 +1014,13 @@ function filterOutDeprecatedReportActions(reportActions: OnyxEntry !isDeletedParentAction(action) && (!isReportPreviewAction(action) || action.shouldShow)); + const isDeletedMoneyRequest = (action: ReportAction) => isDeletedParentAction(action) && isMoneyRequestAction(action); + const isHiddenReportPreviewWithoutPendingAction = (action: ReportAction) => isReportPreviewAction(action) && action.pendingAction === undefined && !action.shouldShow; + return actions.filter((action) => !isDeletedMoneyRequest(action) && !isHiddenReportPreviewWithoutPendingAction(action)); } /** From 3b18f4a4191233724fb84373762639bd3c413152 Mon Sep 17 00:00:00 2001 From: Jakub Korytko Date: Mon, 19 May 2025 12:47:48 +0200 Subject: [PATCH 3/3] Re-run check