Skip to content

Commit fdac720

Browse files
authored
Merge pull request #60334 from nkdengineer/fix/60100
do not show 1 selected button in one transaction thread
2 parents 7368027 + bdf74e9 commit fdac720

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

src/components/MoneyReportHeader.tsx

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,11 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
124124
const {shouldUseNarrowLayout, isSmallScreenWidth} = useResponsiveLayout();
125125
const route = useRoute();
126126
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
127-
const [chatReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${moneyRequestReport?.chatReportID || CONST.DEFAULT_NUMBER_ID}`);
127+
const [chatReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${moneyRequestReport?.chatReportID}`, {canBeMissing: true});
128128
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
129-
const [nextStep] = useOnyx(`${ONYXKEYS.COLLECTION.NEXT_STEP}${moneyRequestReport?.reportID || CONST.DEFAULT_NUMBER_ID}`);
130-
const [transactionThreadReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${transactionThreadReportID}`);
131-
const [session] = useOnyx(ONYXKEYS.SESSION);
129+
const [nextStep] = useOnyx(`${ONYXKEYS.COLLECTION.NEXT_STEP}${moneyRequestReport?.reportID}`, {canBeMissing: true});
130+
const [transactionThreadReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${transactionThreadReportID}`, {canBeMissing: true});
131+
const [session] = useOnyx(ONYXKEYS.SESSION, {canBeMissing: true});
132132
const requestParentReportAction = useMemo(() => {
133133
if (!reportActions || !transactionThreadReport?.parentReportActionID) {
134134
return null;
@@ -138,9 +138,12 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
138138
const [transactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {
139139
selector: (_transactions) => reportTransactionsSelector(_transactions, moneyRequestReport?.reportID),
140140
initialValue: [],
141+
canBeMissing: true,
141142
});
142-
const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${isMoneyRequestAction(requestParentReportAction) && getOriginalMessage(requestParentReportAction)?.IOUTransactionID}`);
143-
const [dismissedHoldUseExplanation, dismissedHoldUseExplanationResult] = useOnyx(ONYXKEYS.NVP_DISMISSED_HOLD_USE_EXPLANATION, {initialValue: true});
143+
const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${isMoneyRequestAction(requestParentReportAction) && getOriginalMessage(requestParentReportAction)?.IOUTransactionID}`, {
144+
canBeMissing: true,
145+
});
146+
const [dismissedHoldUseExplanation, dismissedHoldUseExplanationResult] = useOnyx(ONYXKEYS.NVP_DISMISSED_HOLD_USE_EXPLANATION, {initialValue: true, canBeMissing: true});
144147
const isLoadingHoldUseExplained = isLoadingOnyxValue(dismissedHoldUseExplanationResult);
145148

146149
const {isPaidAnimationRunning, isApprovedAnimationRunning, stopAnimation, startAnimation, startApprovedAnimation} = usePaymentAnimations();
@@ -170,7 +173,7 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
170173
return !!transactions && transactions.length > 0 && transactions.every((t) => isExpensifyCardTransaction(t) && isPending(t));
171174
}, [transactions]);
172175
const transactionIDs = useMemo(() => transactions?.map((t) => t.transactionID) ?? [], [transactions]);
173-
const [allViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS);
176+
const [allViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true});
174177
const violations = useMemo(
175178
() => Object.fromEntries(Object.entries(allViolations ?? {}).filter(([key]) => transactionIDs.includes(key.replace(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, '')))),
176179
[allViolations, transactionIDs],
@@ -182,7 +185,7 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
182185
const hasOnlyHeldExpenses = hasOnlyHeldExpensesReportUtils(moneyRequestReport?.reportID);
183186
const isPayAtEndExpense = isPayAtEndExpenseTransactionUtils(transaction);
184187
const isArchivedReport = isArchivedReportWithID(moneyRequestReport?.reportID);
185-
const [archiveReason] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${moneyRequestReport?.reportID}`, {selector: getArchiveReason});
188+
const [archiveReason] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${moneyRequestReport?.reportID}`, {selector: getArchiveReason, canBeMissing: true});
186189

187190
const getCanIOUBePaid = useCallback(
188191
(onlyShowPayElsewhere = false, shouldCheckApprovedState = true) =>
@@ -288,7 +291,7 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
288291
return options;
289292
}, [moneyRequestReport, reportActions, selectedTransactionsID, session?.accountID, setSelectedTransactionsID, translate]);
290293

291-
const shouldShowSelectedTransactionsButton = !!selectedTransactionsOptions.length;
294+
const shouldShowSelectedTransactionsButton = !!selectedTransactionsOptions.length && !transactionThreadReportID;
292295

293296
const canIOUBePaid = useMemo(() => getCanIOUBePaid(), [getCanIOUBePaid]);
294297
const canIOUBePaidAndApproved = useMemo(() => getCanIOUBePaid(false, false), [getCanIOUBePaid]);
@@ -353,7 +356,7 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
353356
const isMoreContentShown = shouldShowNextStep || shouldShowStatusBar || (shouldShowAnyButton && shouldUseNarrowLayout);
354357
const {isDelegateAccessRestricted} = useDelegateUserDetails();
355358
const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
356-
const [isLoadingReportData] = useOnyx(ONYXKEYS.IS_LOADING_REPORT_DATA);
359+
const [isLoadingReportData] = useOnyx(ONYXKEYS.IS_LOADING_REPORT_DATA, {canBeMissing: true});
357360

358361
const isReportInRHP = route.name === SCREENS.SEARCH.REPORT_RHP;
359362
const shouldDisplaySearchRouter = !isReportInRHP || isSmallScreenWidth;
@@ -497,6 +500,16 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
497500
setIsDeleteRequestModalVisible(false);
498501
}, [canDeleteRequest]);
499502

503+
useEffect(() => {
504+
if (!transactionThreadReportID) {
505+
return;
506+
}
507+
setSelectedTransactionsID([]);
508+
// We don't need to run the effect on change of setSelectedTransactionsID since it can cause the infinite loop.
509+
// eslint-disable-next-line react-compiler/react-compiler
510+
// eslint-disable-next-line react-hooks/exhaustive-deps
511+
}, [transactionThreadReportID]);
512+
500513
const shouldShowBackButton = shouldDisplayBackButton || shouldUseNarrowLayout;
501514

502515
return (

src/components/MoneyRequestReportView/MoneyRequestReportView.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,21 +102,23 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe
102102
const {activeWorkspaceID} = useActiveWorkspace();
103103

104104
const reportID = report?.reportID;
105-
const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP);
106-
const [isComposerFullSize] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_IS_COMPOSER_FULL_SIZE}${reportID}`, {initialValue: false});
105+
const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP, {canBeMissing: true});
106+
const [isComposerFullSize] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_IS_COMPOSER_FULL_SIZE}${reportID}`, {initialValue: false, canBeMissing: true});
107107
const {reportPendingAction, reportErrors} = getReportOfflinePendingActionAndErrors(report);
108108

109109
const {reportActions, hasNewerActions, hasOlderActions} = usePaginatedReportActions(reportID);
110110
const transactionThreadReportID = getOneTransactionThreadReportID(reportID, reportActions ?? [], isOffline);
111111

112112
const [transactions = []] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {
113113
selector: (allTransactions): OnyxTypes.Transaction[] => selectTransactionsForReportID(allTransactions, reportID, reportActions),
114+
canBeMissing: true,
114115
});
115116
const shouldUseSingleTransactionView = transactions.length === 1;
116117

117118
const [parentReportAction] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${getNonEmptyStringOnyxID(report?.parentReportID)}`, {
118119
canEvict: false,
119120
selector: (parentReportActions) => getParentReportAction(parentReportActions, report?.parentReportActionID),
121+
canBeMissing: true,
120122
});
121123

122124
const lastReportAction = [...reportActions, parentReportAction].find((action) => canEditReportAction(action) && !isMoneyRequestAction(action));
@@ -175,7 +177,7 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe
175177
report={report}
176178
policy={policy}
177179
reportActions={reportActions}
178-
transactionThreadReportID={undefined}
180+
transactionThreadReportID={transactionThreadReportID}
179181
shouldDisplayBackButton
180182
onBackButtonPress={() => {
181183
if (!backToRoute) {

0 commit comments

Comments
 (0)