Skip to content

Commit e4324fe

Browse files
authored
Merge pull request Expensify#88777 from parasharrajat/onyx/session-10
Refactor DomainMemberVacationDelegatePage & rejectMoneyRequest function
2 parents be1ff0b + 727d14b commit e4324fe

5 files changed

Lines changed: 19 additions & 16 deletions

File tree

src/libs/actions/IOU/RejectMoneyRequest.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import ROUTES from '@src/ROUTES';
4141
import SCREENS from '@src/SCREENS';
4242
import type * as OnyxTypes from '@src/types/onyx';
4343
import {isEmptyObject} from '@src/types/utils/EmptyObject';
44-
import {getAllReports, getAllTransactions, getAllTransactionViolations, getCurrentUserEmail} from '.';
44+
import {getAllReports, getAllTransactions, getAllTransactionViolations} from '.';
4545

4646
type RejectMoneyRequestData = {
4747
optimisticData: Array<
@@ -107,14 +107,14 @@ function prepareRejectMoneyRequestData(
107107
comment: string,
108108
policy: OnyxEntry<OnyxTypes.Policy>,
109109
currentUserAccountIDParam: number,
110+
currentUserLogin: string,
110111
betas: OnyxEntry<OnyxTypes.Beta[]>,
111112
options?: {sharedRejectedToReportID?: string},
112113
shouldUseBulkAction?: boolean,
113114
): RejectMoneyRequestData | undefined {
114115
const allTransactions = getAllTransactions();
115116
const allReports = getAllReports();
116117
const allTransactionViolations = getAllTransactionViolations();
117-
const deprecatedCurrentUserEmail = getCurrentUserEmail();
118118

119119
const transaction = allTransactions[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`];
120120
const transactionAmount = getAmount(transaction);
@@ -459,7 +459,7 @@ function prepareRejectMoneyRequestData(
459459
amount: transactionAmount,
460460
currency: getCurrency(transaction),
461461
comment: parsedComment,
462-
payeeEmail: deprecatedCurrentUserEmail,
462+
payeeEmail: currentUserLogin,
463463
participants: [{accountID: report?.ownerAccountID}],
464464
transactionID: transaction.transactionID,
465465
existingTransactionThreadReportID: childReportID,
@@ -726,7 +726,7 @@ function prepareRejectMoneyRequestData(
726726
const shouldHaveOutstandingChildRequest = hasOutstandingChildRequest(
727727
policyExpenseChat,
728728
excludedReportID,
729-
deprecatedCurrentUserEmail,
729+
currentUserLogin,
730730
currentUserAccountIDParam,
731731
allTransactionViolations,
732732
undefined,
@@ -786,7 +786,7 @@ function prepareRejectMoneyRequestData(
786786
type: CONST.VIOLATION_TYPES.WARNING,
787787
data: {
788788
comment: comment ?? '',
789-
rejectedBy: deprecatedCurrentUserEmail,
789+
rejectedBy: currentUserLogin,
790790
rejectedDate: DateUtils.getDBTime(),
791791
},
792792
showInReview: true,
@@ -883,10 +883,11 @@ function rejectMoneyRequest(
883883
comment: string,
884884
policy: OnyxEntry<OnyxTypes.Policy>,
885885
currentUserAccountIDParam: number,
886+
currentUserLogin: string,
886887
betas: OnyxEntry<OnyxTypes.Beta[]>,
887888
options?: {sharedRejectedToReportID?: string},
888889
): Route | undefined {
889-
const data = prepareRejectMoneyRequestData(transactionID, reportID, comment, policy, currentUserAccountIDParam, betas, options);
890+
const data = prepareRejectMoneyRequestData(transactionID, reportID, comment, policy, currentUserAccountIDParam, currentUserLogin, betas, options);
890891
if (!data) {
891892
return;
892893
}

src/libs/actions/Search.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ import type {OnyxData} from '@src/types/onyx/Request';
7474
import type Nullable from '@src/types/utils/Nullable';
7575
import SafeString from '@src/utils/SafeString';
7676
import {setPersonalBankAccountContinueKYCOnSuccess} from './BankAccounts';
77+
import {getCurrentUserEmail} from './IOU';
7778
import {deleteMoneyRequest} from './IOU/DeleteMoneyRequest';
7879
import {prepareRejectMoneyRequestData, rejectMoneyRequest} from './IOU/RejectMoneyRequest';
7980
import type {RejectMoneyRequestData} from './IOU/RejectMoneyRequest';
@@ -1003,7 +1004,7 @@ function rejectMoneyRequestInBulk(
10031004
}
10041005
> = {};
10051006
for (const transactionID of transactionIDs) {
1006-
const data = prepareRejectMoneyRequestData(transactionID, reportID, comment, policy, currentUserAccountIDParam, betas, undefined, true);
1007+
const data = prepareRejectMoneyRequestData(transactionID, reportID, comment, policy, currentUserAccountIDParam, getCurrentUserEmail(), betas, undefined, true);
10071008
if (data) {
10081009
optimisticData.push(...data.optimisticData);
10091010
successData.push(...data.successData);
@@ -1076,7 +1077,7 @@ function rejectMoneyRequestsOnSearch(
10761077
// Share a single destination ID across all rejections from the same source report
10771078
const sharedRejectedToReportID = generateReportID();
10781079
for (const transactionID of selectedTransactionIDs) {
1079-
rejectMoneyRequest(transactionID, reportID, comment, policy, currentUserAccountIDParam, betas, {sharedRejectedToReportID});
1080+
rejectMoneyRequest(transactionID, reportID, comment, policy, currentUserAccountIDParam, getCurrentUserEmail(), betas, {sharedRejectedToReportID});
10801081
}
10811082
}
10821083
if (isSingleReport && areAllExpensesSelected && !isPolicyDelayedSubmissionEnabled) {

src/pages/domain/Members/DomainMemberVacationDelegatePage.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import {personalDetailsSelector} from '@selectors/PersonalDetails';
33
import React from 'react';
44
import BaseVacationDelegateSelectionComponent from '@components/BaseVacationDelegateSelectionComponent';
55
import ScreenWrapper from '@components/ScreenWrapper';
6+
import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
67
import useLocalize from '@hooks/useLocalize';
78
import useOnyx from '@hooks/useOnyx';
89
import Navigation from '@libs/Navigation/Navigation';
910
import type {PlatformStackScreenProps} from '@navigation/PlatformStackNavigation/types';
1011
import type {SettingsNavigatorParamList} from '@navigation/types';
1112
import DomainNotFoundPageWrapper from '@pages/domain/DomainNotFoundPageWrapper';
1213
import {deleteDomainVacationDelegate, setDomainVacationDelegate} from '@userActions/Domain';
13-
import {getCurrentUserEmail} from '@userActions/IOU';
1414
import ONYXKEYS from '@src/ONYXKEYS';
1515
import ROUTES from '@src/ROUTES';
1616
import type SCREENS from '@src/SCREENS';
@@ -22,7 +22,7 @@ function DomainMemberVacationDelegatePage({route}: DomainMemberVacationDelegateP
2222
const {domainAccountID, accountID} = route.params;
2323
const {translate} = useLocalize();
2424

25-
const currentUserEmail = getCurrentUserEmail();
25+
const {login: currentUserLogin} = useCurrentUserPersonalDetails();
2626

2727
const [vacationDelegate] = useOnyx(`${ONYXKEYS.COLLECTION.DOMAIN}${domainAccountID}`, {
2828
selector: vacationDelegateSelector(accountID),
@@ -46,7 +46,7 @@ function DomainMemberVacationDelegatePage({route}: DomainMemberVacationDelegateP
4646
return;
4747
}
4848

49-
setDomainVacationDelegate(domainAccountID, accountID, currentUserEmail, memberLogin, delegateLogin, vacationDelegate);
49+
setDomainVacationDelegate(domainAccountID, accountID, currentUserLogin ?? '', memberLogin, delegateLogin, vacationDelegate);
5050
Navigation.goBack(ROUTES.DOMAIN_MEMBER_DETAILS.getRoute(domainAccountID, accountID));
5151
};
5252

src/pages/iou/RejectReasonPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ function RejectReasonPage({route}: RejectReasonPageProps) {
3333
const [reportPolicyID] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${getNonEmptyStringOnyxID(reportID)}`, {selector: getReportPolicyID});
3434
const policy = usePolicy(reportPolicyID);
3535
const {superWideRHPRouteKeys} = useWideRHPState();
36-
const {accountID: currentUserAccountID} = useCurrentUserPersonalDetails();
36+
const {accountID: currentUserAccountID, login: currentUserLogin} = useCurrentUserPersonalDetails();
3737
const [betas] = useOnyx(ONYXKEYS.BETAS);
3838
const {isDelegateAccessRestricted} = useDelegateNoAccessState();
3939
const {showDelegateNoAccessModal} = useDelegateNoAccessActions();
@@ -43,7 +43,7 @@ function RejectReasonPage({route}: RejectReasonPageProps) {
4343
return;
4444
}
4545

46-
const urlToNavigateBack = rejectMoneyRequest(transactionID, reportID, values.comment, policy, currentUserAccountID, betas);
46+
const urlToNavigateBack = rejectMoneyRequest(transactionID, reportID, values.comment, policy, currentUserAccountID, currentUserLogin ?? '', betas);
4747
removeTransaction(transactionID);
4848
// If the super wide rhp is not opened, dismiss the entire modal.
4949
if (superWideRHPRouteKeys.length > 0) {

tests/actions/IOUTest/RejectMoneyRequestTest.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ describe('actions/IOU/RejectMoneyRequest', () => {
8888
let transaction: OnyxEntry<Transaction>;
8989
let policy: OnyxEntry<Policy>;
9090
const TEST_USER_ACCOUNT_ID = 1;
91+
const TEST_USER_EMAIL = 'test@email.com';
9192
const MANAGER_ACCOUNT_ID = 2;
9293
const ADMIN_ACCOUNT_ID = 3;
9394

@@ -149,7 +150,7 @@ describe('actions/IOU/RejectMoneyRequest', () => {
149150
if (!transaction?.transactionID || !iouReport?.reportID) {
150151
throw new Error('Required transaction or report data is missing');
151152
}
152-
const result = rejectMoneyRequest(transaction.transactionID, iouReport.reportID, comment, policy, TEST_USER_ACCOUNT_ID, [CONST.BETAS.ALL]);
153+
const result = rejectMoneyRequest(transaction.transactionID, iouReport.reportID, comment, policy, TEST_USER_ACCOUNT_ID, TEST_USER_EMAIL, [CONST.BETAS.ALL]);
153154

154155
// Then: Should return navigation route to chat report
155156
expect(result).toBe(ROUTES.REPORT_WITH_ID.getRoute(iouReport.reportID));
@@ -165,7 +166,7 @@ describe('actions/IOU/RejectMoneyRequest', () => {
165166
if (!transaction?.transactionID || !iouReport?.reportID) {
166167
throw new Error('Required transaction or report data is missing');
167168
}
168-
rejectMoneyRequest(transaction.transactionID, iouReport.reportID, comment, policy, TEST_USER_ACCOUNT_ID, [CONST.BETAS.ALL]);
169+
rejectMoneyRequest(transaction.transactionID, iouReport.reportID, comment, policy, TEST_USER_ACCOUNT_ID, TEST_USER_EMAIL, [CONST.BETAS.ALL]);
169170
await waitForBatchedUpdates();
170171

171172
// Then: Verify violation is added
@@ -221,7 +222,7 @@ describe('actions/IOU/RejectMoneyRequest', () => {
221222
if (!transaction?.transactionID || !iouReport?.reportID) {
222223
throw new Error('Required transaction or report data is missing');
223224
}
224-
rejectMoneyRequest(transaction.transactionID, iouReport.reportID, comment, policy, TEST_USER_ACCOUNT_ID, [CONST.BETAS.ALL]);
225+
rejectMoneyRequest(transaction.transactionID, iouReport.reportID, comment, policy, TEST_USER_ACCOUNT_ID, TEST_USER_EMAIL, [CONST.BETAS.ALL]);
225226
await waitForBatchedUpdates();
226227

227228
// Then: createdIOUReportActionID shouldn't be undefined

0 commit comments

Comments
 (0)