Skip to content

Commit 2421215

Browse files
committed
change shouldUseSingleTransactionView condition to work on transactions
1 parent 33f6b0a commit 2421215

File tree

2 files changed

+28
-23
lines changed

2 files changed

+28
-23
lines changed

src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import isEmpty from 'lodash/isEmpty';
33
import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';
44
import {InteractionManager, View} from 'react-native';
55
import type {NativeScrollEvent, NativeSyntheticEvent} from 'react-native';
6-
import type {OnyxCollection, OnyxEntry} from 'react-native-onyx';
6+
import type {OnyxEntry} from 'react-native-onyx';
77
import {useOnyx} from 'react-native-onyx';
88
import FlatList from '@components/FlatList';
99
import {AUTOSCROLL_TO_TOP_THRESHOLD} from '@components/InvertedFlatList/BaseInvertedFlatList';
@@ -17,7 +17,6 @@ import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID';
1717
import {isActionVisibleOnMoneyRequestReport} from '@libs/MoneyRequestReportUtils';
1818
import {
1919
getFirstVisibleReportActionID,
20-
getIOUActionForTransactionID,
2120
getMostRecentIOURequestActionID,
2221
getOneTransactionThreadReportID,
2322
hasNextActionMadeBySameActor,
@@ -39,7 +38,6 @@ import CONST from '@src/CONST';
3938
import ONYXKEYS from '@src/ONYXKEYS';
4039
import ROUTES from '@src/ROUTES';
4140
import type * as OnyxTypes from '@src/types/onyx';
42-
import type Transaction from '@src/types/onyx/Transaction';
4341
import MoneyRequestReportTransactionList from './MoneyRequestReportTransactionList';
4442
import SearchMoneyRequestReportEmptyState from './SearchMoneyRequestReportEmptyState';
4543

@@ -57,6 +55,9 @@ type MoneyRequestReportListProps = {
5755
/** Array of report actions for this report */
5856
reportActions?: OnyxTypes.ReportAction[];
5957

58+
/** List of transactions belonging to this report */
59+
transactions: OnyxTypes.Transaction[];
60+
6061
/** If the report has newer actions to load */
6162
hasNewerActions: boolean;
6263

@@ -71,21 +72,11 @@ function getParentReportAction(parentReportActions: OnyxEntry<OnyxTypes.ReportAc
7172
return parentReportActions[parentReportActionID];
7273
}
7374

74-
function selectTransactionsForReportID(transactions: OnyxCollection<OnyxTypes.Transaction>, reportID: string, reportActions: OnyxTypes.ReportAction[]) {
75-
return Object.values(transactions ?? {}).filter((transaction): transaction is Transaction => {
76-
if (!transaction) {
77-
return false;
78-
}
79-
const action = getIOUActionForTransactionID(reportActions, transaction.transactionID);
80-
return transaction.reportID === reportID && !isDeletedParentAction(action);
81-
});
82-
}
83-
8475
/**
8576
* TODO make this component have the same functionalities as `ReportActionsList`
8677
* - shouldDisplayNewMarker
8778
*/
88-
function MoneyRequestReportActionsList({report, reportActions = [], hasNewerActions, hasOlderActions}: MoneyRequestReportListProps) {
79+
function MoneyRequestReportActionsList({report, reportActions = [], transactions = [], hasNewerActions, hasOlderActions}: MoneyRequestReportListProps) {
8980
const styles = useThemeStyles();
9081
const {translate} = useLocalize();
9182
const {preferredLocale} = useLocalize();
@@ -101,9 +92,6 @@ function MoneyRequestReportActionsList({report, reportActions = [], hasNewerActi
10192
const mostRecentIOUReportActionID = useMemo(() => getMostRecentIOURequestActionID(reportActions), [reportActions]);
10293
const transactionThreadReportID = getOneTransactionThreadReportID(reportID, reportActions ?? [], false);
10394
const firstVisibleReportActionID = useMemo(() => getFirstVisibleReportActionID(reportActions, isOffline), [reportActions, isOffline]);
104-
const [transactions = []] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {
105-
selector: (allTransactions): OnyxTypes.Transaction[] => selectTransactionsForReportID(allTransactions, reportID, reportActions),
106-
});
10795
const [transactionThreadReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${transactionThreadReportID ?? CONST.DEFAULT_NUMBER_ID}`);
10896
const [currentUserAccountID] = useOnyx(ONYXKEYS.SESSION, {selector: (session) => session?.accountID});
10997

src/components/MoneyRequestReportView/MoneyRequestReportView.tsx

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
/* eslint-disable no-nested-ternary */
2-
import React, {useCallback, useMemo} from 'react';
1+
import React, {useCallback} from 'react';
32
import {InteractionManager, View} from 'react-native';
4-
import type {OnyxEntry} from 'react-native-onyx';
3+
import type {OnyxCollection, OnyxEntry} from 'react-native-onyx';
54
import {useOnyx} from 'react-native-onyx';
65
import HeaderGap from '@components/HeaderGap';
76
import MoneyReportHeader from '@components/MoneyReportHeader';
@@ -16,13 +15,12 @@ import {removeFailedReport} from '@libs/actions/Report';
1615
import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID';
1716
import Log from '@libs/Log';
1817
import navigationRef from '@libs/Navigation/navigationRef';
19-
import {getOneTransactionThreadReportID, isMoneyRequestAction} from '@libs/ReportActionsUtils';
18+
import {getIOUActionForTransactionID, getOneTransactionThreadReportID, isDeletedParentAction, isMoneyRequestAction} from '@libs/ReportActionsUtils';
2019
import {canEditReportAction, getReportOfflinePendingActionAndErrors} from '@libs/ReportUtils';
2120
import {buildCannedSearchQuery} from '@libs/SearchQueryUtils';
2221
import Navigation from '@navigation/Navigation';
2322
import ReportActionsView from '@pages/home/report/ReportActionsView';
2423
import ReportFooter from '@pages/home/report/ReportFooter';
25-
import CONST from '@src/CONST';
2624
import NAVIGATORS from '@src/NAVIGATORS';
2725
import ONYXKEYS from '@src/ONYXKEYS';
2826
import type {Route} from '@src/ROUTES';
@@ -84,6 +82,20 @@ function getParentReportAction(parentReportActions: OnyxEntry<OnyxTypes.ReportAc
8482
return parentReportActions[parentReportActionID];
8583
}
8684

85+
function selectTransactionsForReportID(transactions: OnyxCollection<OnyxTypes.Transaction>, reportID: string | undefined, reportActions: OnyxTypes.ReportAction[]) {
86+
if (!reportID) {
87+
return [];
88+
}
89+
90+
return Object.values(transactions ?? {}).filter((transaction): transaction is OnyxTypes.Transaction => {
91+
if (!transaction) {
92+
return false;
93+
}
94+
const action = getIOUActionForTransactionID(reportActions, transaction.transactionID);
95+
return transaction.reportID === reportID && !isDeletedParentAction(action);
96+
});
97+
}
98+
8799
function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayReportFooter, backToRoute}: MoneyRequestReportViewProps) {
88100
const styles = useThemeStyles();
89101
const {isOffline} = useNetwork();
@@ -96,7 +108,11 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe
96108

97109
const {reportActions, hasNewerActions, hasOlderActions} = usePaginatedReportActions(reportID);
98110
const transactionThreadReportID = getOneTransactionThreadReportID(reportID, reportActions ?? [], isOffline);
99-
const shouldUseSingleTransactionView = useMemo(() => reportActions.filter((action) => action.actionName === CONST.REPORT.ACTIONS.TYPE.IOU).length === 1, [reportActions]);
111+
112+
const [transactions = []] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {
113+
selector: (allTransactions): OnyxTypes.Transaction[] => selectTransactionsForReportID(allTransactions, reportID, reportActions),
114+
});
115+
const shouldUseSingleTransactionView = transactions.length === 1;
100116

101117
const [parentReportAction] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${getNonEmptyStringOnyxID(report?.parentReportID)}`, {
102118
canEvict: false,
@@ -183,6 +199,7 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe
183199
) : (
184200
<MoneyRequestReportActionsList
185201
report={report}
202+
transactions={transactions}
186203
reportActions={reportActions}
187204
hasOlderActions={hasOlderActions}
188205
hasNewerActions={hasNewerActions}

0 commit comments

Comments
 (0)