Skip to content

Commit 856e976

Browse files
committed
perf: scope Search list violations subscription per row
1 parent af304c0 commit 856e976

4 files changed

Lines changed: 6 additions & 15 deletions

File tree

src/components/Search/SearchList/ListItem/TransactionListItem.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ function TransactionListItem<TItem extends ListItem>({
5151
shouldSyncFocus,
5252
columns,
5353
isLoading,
54-
violations,
5554
nonPersonalAndWorkspaceCards,
5655
lastPaymentMethod,
5756
personalPolicyID,
@@ -96,6 +95,7 @@ function TransactionListItem<TItem extends ListItem>({
9695
const [parentReport] = originalUseOnyx(`${ONYXKEYS.COLLECTION.REPORT}${getNonEmptyStringOnyxID(transactionItem.reportID)}`);
9796
const [transactionThreadReport] = originalUseOnyx(`${ONYXKEYS.COLLECTION.REPORT}${transactionItem?.reportAction?.childReportID}`);
9897
const [transaction] = originalUseOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${getNonEmptyStringOnyxID(transactionItem.transactionID)}`);
98+
const [transactionViolations] = originalUseOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${getNonEmptyStringOnyxID(transactionItem.transactionID)}`);
9999
const parentReportActionSelector = (reportActions: OnyxEntry<ReportActions>): OnyxEntry<ReportAction> => reportActions?.[`${transactionItem?.reportAction?.reportActionID}`];
100100
const [parentReportAction] = originalUseOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${getNonEmptyStringOnyxID(transactionItem.reportID)}`, {selector: parentReportActionSelector}, [
101101
transactionItem,
@@ -149,7 +149,7 @@ function TransactionListItem<TItem extends ListItem>({
149149
const policyForViolations = parentPolicy ?? snapshotPolicy;
150150
const reportForViolations = parentReport ?? snapshotReport;
151151

152-
const onyxViolations = (violations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionItem.transactionID}`] ?? []).filter(
152+
const onyxViolations = (transactionViolations ?? []).filter(
153153
(violation: TransactionViolation) =>
154154
!isViolationDismissed(transactionItem, violation, currentUserDetails.email ?? '', currentUserDetails.accountID, reportForViolations, policyForViolations) &&
155155
shouldShowViolation(reportForViolations, policyForViolations, violation.name, currentUserDetails.email ?? '', false, transactionItem),
@@ -169,7 +169,7 @@ function TransactionListItem<TItem extends ListItem>({
169169
isInvoice,
170170
);
171171

172-
const transactionViolations = mergeProhibitedViolations(attendeeOnyxViolations);
172+
const mergedTransactionViolations = mergeProhibitedViolations(attendeeOnyxViolations);
173173

174174
const {isDelegateAccessRestricted} = useDelegateNoAccessState();
175175
const {showDelegateNoAccessModal} = useDelegateNoAccessActions();
@@ -270,7 +270,7 @@ function TransactionListItem<TItem extends ListItem>({
270270
!isLargeScreenWidth && [styles.p0, styles.pt3, isLastItem ? styles.searchTableBottomRadius : styles.noBorderRadius],
271271
isLargeScreenWidth && (isLastItem ? styles.searchTableBottomRadius : styles.noBorderRadius),
272272
]}
273-
violations={transactionViolations}
273+
violations={mergedTransactionViolations}
274274
onArrowRightPress={isDeletedTransaction ? undefined : () => onSelectRow(item, transactionPreviewData)}
275275
isHover={hovered}
276276
nonPersonalAndWorkspaceCards={nonPersonalAndWorkspaceCards}

src/components/Search/SearchList/ListItem/types.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,6 @@ type TransactionListItemProps<TItem extends ListItem> = ListItemProps<TItem> &
422422
/** Whether the item's action is loading */
423423
isLoading?: boolean;
424424
columns?: SearchColumnType[];
425-
violations?: Record<string, TransactionViolations | undefined> | undefined;
426425
policyForMovingExpenses?: Policy;
427426
/** Non-personal and workspace cards for company card display */
428427
nonPersonalAndWorkspaceCards?: CardList;
@@ -438,7 +437,6 @@ type TransactionGroupListItemProps<TItem extends ListItem> = ListItemProps<TItem
438437
accountID?: number;
439438
columns?: SearchColumnType[];
440439
newTransactionID?: string;
441-
violations?: Record<string, TransactionViolations | undefined> | undefined;
442440
policyForMovingExpenses?: Policy;
443441
/** Non-personal and workspace cards for company card display */
444442
nonPersonalAndWorkspaceCards?: CardList;
@@ -455,12 +453,12 @@ type TransactionGroupListExpandedProps<TItem extends ListItem> = Pick<
455453
| 'groupBy'
456454
| 'accountID'
457455
| 'isOffline'
458-
| 'violations'
459456
| 'onSelectRow'
460457
| 'nonPersonalAndWorkspaceCards'
461458
| 'onUndelete'
462459
| 'policyForMovingExpenses'
463460
> & {
461+
violations?: Record<string, TransactionViolations | undefined> | undefined;
464462
transactions: TransactionListItemType[];
465463
transactionsVisibleLimit: number;
466464
setTransactionsVisibleLimit: React.Dispatch<React.SetStateAction<number>>;

src/components/Search/SearchList/index.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import variables from '@styles/variables';
3535
import type {TransactionPreviewData} from '@userActions/Search';
3636
import CONST from '@src/CONST';
3737
import ONYXKEYS from '@src/ONYXKEYS';
38-
import type {CardList, Policy, Transaction, TransactionViolations} from '@src/types/onyx';
38+
import type {CardList, Policy, Transaction} from '@src/types/onyx';
3939
import type {HoldMenuCallback} from '..';
4040
import BaseSearchList from './BaseSearchList';
4141
import type ChatListItem from './ListItem/ChatListItem';
@@ -118,9 +118,6 @@ type SearchListProps = Pick<FlashListProps<SearchListItem>, 'onScroll' | 'conten
118118

119119
newTransactions?: Transaction[];
120120

121-
/** Violations indexed by transaction ID */
122-
violations?: Record<string, TransactionViolations | undefined> | undefined;
123-
124121
/** Callback to fire when hold menu should be opened */
125122
onHoldMenuOpen?: HoldMenuCallback;
126123

@@ -217,7 +214,6 @@ function SearchList({
217214
shouldAnimate,
218215
isMobileSelectionModeEnabled,
219216
newTransactions = [],
220-
violations,
221217
onHoldMenuOpen,
222218
nonPersonalAndWorkspaceCards,
223219
selectedTransactions,
@@ -459,7 +455,6 @@ function SearchList({
459455
personalDetails={personalDetails}
460456
userBillingFundID={userBillingFundID}
461457
isOffline={isOffline}
462-
violations={violations}
463458
nonPersonalAndWorkspaceCards={nonPersonalAndWorkspaceCards}
464459
onFocus={onFocus}
465460
newTransactionID={newTransactionID}
@@ -491,7 +486,6 @@ function SearchList({
491486
personalDetails,
492487
userBillingFundID,
493488
isOffline,
494-
violations,
495489
lastPaymentMethod,
496490
personalPolicyID,
497491
onHoldMenuOpen,

src/components/Search/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1829,7 +1829,6 @@ function Search({
18291829
}
18301830
queryJSON={queryJSON}
18311831
columns={columnsToShow}
1832-
violations={violations}
18331832
onLayout={onLayout}
18341833
isMobileSelectionModeEnabled={isMobileSelectionModeEnabled}
18351834
shouldAnimate={type === CONST.SEARCH.DATA_TYPES.EXPENSE}

0 commit comments

Comments
 (0)