Skip to content

Commit 3210e49

Browse files
authored
Merge pull request Expensify#88776 from parasharrajat/onyx/session-9
Refactor unholdRequest to pass currentUserdata
2 parents b837397 + 07cc46e commit 3210e49

14 files changed

Lines changed: 52 additions & 39 deletions

src/components/MoneyReportHeaderEducationalModals.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {shouldFailAllRequestsSelector} from '@selectors/Network';
22
import React, {useImperativeHandle, useState} from 'react';
33
import type {Ref} from 'react';
44
import type {ValueOf} from 'type-fest';
5+
import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
56
import useNetwork from '@hooks/useNetwork';
67
import useOnyx from '@hooks/useOnyx';
78
import usePaginatedReportActions from '@hooks/usePaginatedReportActions';
@@ -47,6 +48,7 @@ function MoneyReportHeaderEducationalModals({reportID, ref}: MoneyReportHeaderEd
4748
const {reportActions: unfilteredReportActions} = usePaginatedReportActions(moneyRequestReport?.reportID);
4849
const reportActions = getFilteredReportActionsForReportView(unfilteredReportActions);
4950
const {transactions: reportTransactions} = useTransactionsAndViolationsForReport(moneyRequestReport?.reportID);
51+
const {login: currentUserLogin, accountID: currentUserAccountID} = useCurrentUserPersonalDetails();
5052

5153
// Derive transaction thread and parent action
5254
const nonDeletedTransactions = getAllNonDeletedTransactions(reportTransactions, reportActions, isOffline, true);
@@ -72,15 +74,15 @@ function MoneyReportHeaderEducationalModals({reportID, ref}: MoneyReportHeaderEd
7274
setIsHoldEducationalModalVisible(false);
7375
setNameValuePair(ONYXKEYS.NVP_DISMISSED_HOLD_USE_EXPLANATION, true, false, !shouldFailAllRequests);
7476
if (requestParentReportAction) {
75-
changeMoneyRequestHoldStatus(requestParentReportAction, transaction, isOffline);
77+
changeMoneyRequestHoldStatus(requestParentReportAction, transaction, isOffline, currentUserLogin ?? '', currentUserAccountID);
7678
}
7779
};
7880

7981
const dismissRejectModalBasedOnAction = () => {
8082
if (rejectModalAction === CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.HOLD) {
8183
dismissRejectUseExplanation();
8284
if (requestParentReportAction) {
83-
changeMoneyRequestHoldStatus(requestParentReportAction, transaction, isOffline);
85+
changeMoneyRequestHoldStatus(requestParentReportAction, transaction, isOffline, currentUserLogin ?? '', currentUserAccountID);
8486
}
8587
} else if (rejectModalAction === CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.REJECT_BULK) {
8688
dismissRejectUseExplanation();

src/components/MoneyReportHeaderPrimaryAction/RemoveHoldPrimaryAction.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ function RemoveHoldPrimaryAction({reportID, chatReportID}: SimpleActionProps) {
1818
const {isDelegateAccessRestricted} = useDelegateNoAccessState();
1919
const {showDelegateNoAccessModal} = useDelegateNoAccessActions();
2020

21-
const {accountID: currentUserAccountID} = useCurrentUserPersonalDetails();
21+
const {login: currentUserLogin, accountID: currentUserAccountID} = useCurrentUserPersonalDetails();
2222
const {moneyRequestReport, isOffline, reportActions, transactionThreadReportID, requestParentReportAction} = useTransactionThreadData(reportID, chatReportID);
2323
const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${getNonEmptyStringOnyxID(moneyRequestReport?.policyID)}`);
2424

@@ -40,7 +40,7 @@ function RemoveHoldPrimaryAction({reportID, chatReportID}: SimpleActionProps) {
4040

4141
if (IOUActions.length) {
4242
for (const action of IOUActions) {
43-
changeMoneyRequestHoldStatus(action, getLinkedIOUTransaction(action, transactions), isOffline);
43+
changeMoneyRequestHoldStatus(action, getLinkedIOUTransaction(action, transactions), isOffline, currentUserLogin ?? '', currentUserAccountID);
4444
}
4545
return;
4646
}
@@ -49,7 +49,7 @@ function RemoveHoldPrimaryAction({reportID, chatReportID}: SimpleActionProps) {
4949
if (!moneyRequestAction) {
5050
return;
5151
}
52-
changeMoneyRequestHoldStatus(moneyRequestAction, getLinkedIOUTransaction(moneyRequestAction, transactions), isOffline);
52+
changeMoneyRequestHoldStatus(moneyRequestAction, getLinkedIOUTransaction(moneyRequestAction, transactions), isOffline, currentUserLogin ?? '', currentUserAccountID);
5353
}}
5454
/>
5555
);

src/components/MoneyRequestHeaderPrimaryAction.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ function MoneyRequestHeaderPrimaryAction({reportID}: MoneyRequestHeaderPrimaryAc
8484
showDelegateNoAccessModal();
8585
return;
8686
}
87-
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline);
87+
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline, currentUserLogin ?? '', accountID);
8888
}}
8989
/>
9090
);

src/components/MoneyRequestHeaderSecondaryActions.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,15 +245,15 @@ function MoneyRequestHeaderSecondaryActions({reportID, onBackButtonPress}: Money
245245
setIsHoldEducationalModalVisible(false);
246246
setNameValuePair(ONYXKEYS.NVP_DISMISSED_HOLD_USE_EXPLANATION, true, false, !shouldFailAllRequests);
247247
if (parentReportAction) {
248-
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline);
248+
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline, currentUserLogin ?? '', accountID);
249249
}
250250
};
251251

252252
const dismissRejectModalBasedOnAction = () => {
253253
if (rejectModalAction === CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.HOLD) {
254254
dismissRejectUseExplanation();
255255
if (parentReportAction) {
256-
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline);
256+
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline, currentUserLogin ?? '', accountID);
257257
}
258258
} else {
259259
dismissRejectUseExplanation();
@@ -302,7 +302,7 @@ function MoneyRequestHeaderSecondaryActions({reportID, onBackButtonPress}: Money
302302

303303
const isDismissed = isReportSubmitter ? dismissedHoldUseExplanation : dismissedRejectUseExplanation;
304304
if (isDismissed || isParentChatReportDM) {
305-
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline);
305+
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline, currentUserLogin ?? '', accountID);
306306
} else if (isReportSubmitter) {
307307
setIsHoldEducationalModalVisible(true);
308308
} else {
@@ -324,7 +324,7 @@ function MoneyRequestHeaderSecondaryActions({reportID, onBackButtonPress}: Money
324324
return;
325325
}
326326

327-
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline);
327+
changeMoneyRequestHoldStatus(parentReportAction, transaction, isOffline, currentUserLogin ?? '', accountID);
328328
},
329329
},
330330
[CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.SPLIT]: {

src/hooks/useHoldRejectActions.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {changeMoneyRequestHoldStatus, isCurrentUserSubmitter, isDM} from '@libs/
99
import CONST from '@src/CONST';
1010
import ONYXKEYS from '@src/ONYXKEYS';
1111
import ROUTES from '@src/ROUTES';
12+
import useCurrentUserPersonalDetails from './useCurrentUserPersonalDetails';
1213
import useGetIOUReportFromReportAction from './useGetIOUReportFromReportAction';
1314
import {useMemoizedLazyExpensifyIcons} from './useLazyAsset';
1415
import useLocalize from './useLocalize';
@@ -38,6 +39,7 @@ function useHoldRejectActions({reportID, onHoldEducationalOpen, onRejectModalOpe
3839
const [moneyRequestReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`);
3940
const [chatReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${getNonEmptyStringOnyxID(moneyRequestReport?.chatReportID)}`);
4041
const {transactionThreadReport} = useTransactionThreadReport(reportID);
42+
const {login: currentUserLogin, accountID: currentUserAccountID} = useCurrentUserPersonalDetails();
4143

4244
const [reportActionsForParent] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${getNonEmptyStringOnyxID(moneyRequestReport?.reportID)}`);
4345
const requestParentReportAction = transactionThreadReport?.parentReportActionID ? reportActionsForParent?.[transactionThreadReport.parentReportActionID] : undefined;
@@ -74,7 +76,7 @@ function useHoldRejectActions({reportID, onHoldEducationalOpen, onRejectModalOpe
7476
const isDismissed = isReportSubmitter ? dismissedHoldUseExplanation : dismissedRejectUseExplanation;
7577

7678
if (isDismissed || isChatReportDM) {
77-
changeMoneyRequestHoldStatus(requestParentReportAction, transaction, isOffline);
79+
changeMoneyRequestHoldStatus(requestParentReportAction, transaction, isOffline, currentUserLogin ?? '', currentUserAccountID);
7880
} else if (isReportSubmitter) {
7981
onHoldEducationalOpen();
8082
} else {
@@ -97,7 +99,7 @@ function useHoldRejectActions({reportID, onHoldEducationalOpen, onRejectModalOpe
9799
return;
98100
}
99101

100-
changeMoneyRequestHoldStatus(requestParentReportAction, transaction, isOffline);
102+
changeMoneyRequestHoldStatus(requestParentReportAction, transaction, isOffline, currentUserLogin ?? '', currentUserAccountID);
101103
},
102104
},
103105
[CONST.REPORT.SECONDARY_ACTIONS.REJECT]: {

src/hooks/useSearchBulkActions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,6 +1316,8 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) {
13161316
selectedTransactions[transactionID].reportAction?.childReportID,
13171317
policies?.[`${ONYXKEYS.COLLECTION.POLICY}${selectedTransactions[transactionID].policyID}`],
13181318
isOffline,
1319+
currentUserPersonalDetails?.login ?? '',
1320+
currentUserPersonalDetails?.accountID,
13191321
);
13201322
}
13211323
// eslint-disable-next-line @typescript-eslint/no-deprecated
@@ -1512,15 +1514,13 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) {
15121514
theme.icon,
15131515
styles.colorMuted,
15141516
styles.fontWeightNormal,
1515-
styles.textWrap,
15161517
userBillingGracePeriodEnds,
15171518
ownerBillingGracePeriodEnd,
15181519
currentSearchKey,
15191520
getCurrencyDecimals,
15201521
amountOwed,
15211522
allTransactions,
15221523
isBetaEnabled,
1523-
shouldShowBusinessBankAccountOptions,
15241524
]);
15251525

15261526
const handleOfflineModalClose = useCallback(() => {

src/hooks/useSelectedTransactionsActions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ function useSelectedTransactionsActions({
329329
if (!action?.childReportID) {
330330
continue;
331331
}
332-
unholdRequest(transactionID, action.childReportID, policy, isOffline);
332+
unholdRequest(transactionID, action.childReportID, policy, isOffline, login ?? '', currentUserAccountID);
333333
}
334334
clearSelectedTransactions(true);
335335
},

src/libs/ReportUtils.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5140,7 +5140,13 @@ function canHoldUnholdReportAction(
51405140
return {canHoldRequest, canUnholdRequest};
51415141
}
51425142

5143-
const changeMoneyRequestHoldStatus = (reportAction: OnyxEntry<ReportAction>, iouTransaction: OnyxEntry<Transaction>, isOffline: boolean): void => {
5143+
const changeMoneyRequestHoldStatus = (
5144+
reportAction: OnyxEntry<ReportAction>,
5145+
iouTransaction: OnyxEntry<Transaction>,
5146+
isOffline: boolean,
5147+
currentUserLogin: string,
5148+
currentUserAccountID: number,
5149+
): void => {
51445150
if (!isMoneyRequestAction(reportAction)) {
51455151
return;
51465152
}
@@ -5163,7 +5169,7 @@ const changeMoneyRequestHoldStatus = (reportAction: OnyxEntry<ReportAction>, iou
51635169

51645170
if (isOnHold) {
51655171
if (reportAction.childReportID) {
5166-
unholdRequest(transactionID, reportAction.childReportID, policy, isOffline);
5172+
unholdRequest(transactionID, reportAction.childReportID, policy, isOffline, currentUserLogin, currentUserAccountID);
51675173
} else {
51685174
Log.warn('Missing reportAction.childReportID during money request unhold');
51695175
}

src/libs/actions/IOU/Hold.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import ONYXKEYS from '@src/ONYXKEYS';
3535
import type * as OnyxTypes from '@src/types/onyx';
3636
import type {Participant} from '@src/types/onyx/IOU';
3737
import {isEmptyObject} from '@src/types/utils/EmptyObject';
38-
import {getAllReports, getAllTransactions, getAllTransactionViolations, getCurrentUserEmail, getUserAccountID} from '.';
38+
import {getAllReports, getAllTransactions, getAllTransactionViolations} from '.';
3939

4040
/**
4141
* Put expense on HOLD
@@ -354,12 +354,10 @@ function putTransactionsOnHold(
354354
/**
355355
* Remove expense from HOLD
356356
*/
357-
function unholdRequest(transactionID: string, reportID: string, policy: OnyxEntry<OnyxTypes.Policy>, isOffline: boolean) {
357+
function unholdRequest(transactionID: string, reportID: string, policy: OnyxEntry<OnyxTypes.Policy>, isOffline: boolean, currentUserLogin: string, currentUserAccountID: number) {
358358
const allTransactions = getAllTransactions();
359359
const allTransactionViolations = getAllTransactionViolations();
360360
const allReports = getAllReports();
361-
const userAccountID = getUserAccountID();
362-
const currentUserEmail = getCurrentUserEmail();
363361

364362
const createdReportAction = buildOptimisticUnHoldReportAction();
365363
const transactionViolations = allTransactionViolations[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`];
@@ -484,16 +482,16 @@ function unholdRequest(transactionID: string, reportID: string, policy: OnyxEntr
484482
policy,
485483
predictedNextStatus: iouReport.statusNum ?? CONST.REPORT.STATUS_NUM.OPEN,
486484
shouldFixViolations: updatedTransactionViolations.length > 0,
487-
currentUserAccountIDParam: userAccountID,
488-
currentUserEmailParam: currentUserEmail,
485+
currentUserAccountIDParam: currentUserAccountID,
486+
currentUserEmailParam: currentUserLogin,
489487
});
490488
const optimisticNextStep = buildOptimisticNextStep({
491489
report: iouReport,
492490
policy,
493491
predictedNextStatus: iouReport.statusNum ?? CONST.REPORT.STATUS_NUM.OPEN,
494492
shouldFixViolations: updatedTransactionViolations.length > 0,
495-
currentUserAccountIDParam: userAccountID,
496-
currentUserEmailParam: currentUserEmail,
493+
currentUserAccountIDParam: currentUserAccountID,
494+
currentUserEmailParam: currentUserLogin,
497495
});
498496

499497
optimisticData.push({

src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -595,19 +595,21 @@ const ContextMenuActions: ContextMenuAction[] = [
595595
const holdReportAction = getReportAction(moneyRequestAction?.childReportID, `${iouTransaction?.comment?.hold ?? ''}`);
596596
return canHoldUnholdReportAction(moneyRequestReport, moneyRequestAction, holdReportAction, iouTransaction, moneyRequestPolicy, currentUserAccountID).canUnholdRequest;
597597
},
598-
onPress: (closePopover, {moneyRequestAction, iouTransaction, isDelegateAccessRestricted, showDelegateNoAccessModal, isOffline}) => {
598+
onPress: (closePopover, {moneyRequestAction, iouTransaction, isDelegateAccessRestricted, showDelegateNoAccessModal, isOffline, currentUserPersonalDetails}) => {
599599
if (isDelegateAccessRestricted) {
600600
hideContextMenu(false, showDelegateNoAccessModal);
601601
return;
602602
}
603603

604604
if (closePopover) {
605-
hideContextMenu(false, () => changeMoneyRequestHoldStatus(moneyRequestAction, iouTransaction, isOffline));
605+
hideContextMenu(false, () =>
606+
changeMoneyRequestHoldStatus(moneyRequestAction, iouTransaction, isOffline, currentUserPersonalDetails?.login ?? '', currentUserPersonalDetails.accountID),
607+
);
606608
return;
607609
}
608610

609611
// No popover to hide, call changeMoneyRequestHoldStatus immediately
610-
changeMoneyRequestHoldStatus(moneyRequestAction, iouTransaction, isOffline);
612+
changeMoneyRequestHoldStatus(moneyRequestAction, iouTransaction, isOffline, currentUserPersonalDetails?.login ?? '', currentUserPersonalDetails.accountID);
611613
},
612614
getDescription: () => {},
613615
sentryLabel: CONST.SENTRY_LABEL.CONTEXT_MENU.UNHOLD,
@@ -623,19 +625,21 @@ const ContextMenuActions: ContextMenuAction[] = [
623625
const holdReportAction = getReportAction(moneyRequestAction?.childReportID, `${iouTransaction?.comment?.hold ?? ''}`);
624626
return canHoldUnholdReportAction(moneyRequestReport, moneyRequestAction, holdReportAction, iouTransaction, moneyRequestPolicy, currentUserAccountID).canHoldRequest;
625627
},
626-
onPress: (closePopover, {moneyRequestAction, iouTransaction, isDelegateAccessRestricted, showDelegateNoAccessModal, isOffline}) => {
628+
onPress: (closePopover, {moneyRequestAction, iouTransaction, isDelegateAccessRestricted, showDelegateNoAccessModal, isOffline, currentUserPersonalDetails}) => {
627629
if (isDelegateAccessRestricted) {
628630
hideContextMenu(false, showDelegateNoAccessModal);
629631
return;
630632
}
631633

632634
if (closePopover) {
633-
hideContextMenu(false, () => changeMoneyRequestHoldStatus(moneyRequestAction, iouTransaction, isOffline));
635+
hideContextMenu(false, () =>
636+
changeMoneyRequestHoldStatus(moneyRequestAction, iouTransaction, isOffline, currentUserPersonalDetails?.login ?? '', currentUserPersonalDetails.accountID),
637+
);
634638
return;
635639
}
636640

637641
// No popover to hide, call changeMoneyRequestHoldStatus immediately
638-
changeMoneyRequestHoldStatus(moneyRequestAction, iouTransaction, isOffline);
642+
changeMoneyRequestHoldStatus(moneyRequestAction, iouTransaction, isOffline, currentUserPersonalDetails?.login ?? '', currentUserPersonalDetails.accountID);
639643
},
640644
getDescription: () => {},
641645
sentryLabel: CONST.SENTRY_LABEL.CONTEXT_MENU.HOLD,

0 commit comments

Comments
 (0)