Skip to content

Commit 1d9eb57

Browse files
authored
Merge pull request Expensify#88292 from parasharrajat/onyx/session-6
Refactor mergeDuplicates to pass currentUserData
2 parents a2b2614 + a0772d1 commit 1d9eb57

3 files changed

Lines changed: 17 additions & 17 deletions

File tree

src/libs/actions/IOU/Duplicate.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,14 @@ function getIOUActionForTransactions(transactionIDList: Array<string | undefined
7676
);
7777
}
7878

79+
type MergeDuplicatesFuncParams = MergeDuplicatesParams & {currentUserLogin: string; currentUserAccountID: number};
80+
7981
/** Merge several transactions into one by updating the fields of the one we want to keep and deleting the rest */
80-
function mergeDuplicates({transactionThreadReportID: optimisticTransactionThreadReportID, ...params}: MergeDuplicatesParams) {
82+
function mergeDuplicates({transactionThreadReportID: optimisticTransactionThreadReportID, currentUserLogin, currentUserAccountID, ...params}: MergeDuplicatesFuncParams) {
8183
const allParams: MergeDuplicatesParams = {...params};
8284
const allTransactions = getAllTransactions();
8385
const allTransactionViolations = getAllTransactionViolations();
8486
const allReports = getAllReports();
85-
const currentUserEmail = getCurrentUserEmail();
86-
const currentUserAccountID = getUserAccountID();
87-
8887
const originalSelectedTransaction = allTransactions[`${ONYXKEYS.COLLECTION.TRANSACTION}${params.transactionID}`];
8988

9089
const optimisticTransactionData: OnyxUpdate<typeof ONYXKEYS.COLLECTION.TRANSACTION> = {
@@ -283,7 +282,7 @@ function mergeDuplicates({transactionThreadReportID: optimisticTransactionThread
283282

284283
if (optimisticTransactionThreadReportID) {
285284
const iouAction = getIOUActionForReportID(params.reportID, params.transactionID);
286-
const optimisticCreatedAction = buildOptimisticCreatedReportAction(currentUserEmail);
285+
const optimisticCreatedAction = buildOptimisticCreatedReportAction(currentUserLogin);
287286
const optimisticTransactionThreadReport = buildTransactionThread(iouAction, expenseReport, undefined, optimisticTransactionThreadReportID);
288287

289288
allParams.transactionThreadReportID = optimisticTransactionThreadReportID;

src/pages/TransactionDuplicate/Confirmation.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@ function Confirmation() {
8080
if (!reportAction?.childReportID) {
8181
transactionsMergeParams.transactionThreadReportID = transactionThreadReportID;
8282
}
83-
mergeDuplicates(transactionsMergeParams);
83+
mergeDuplicates({...transactionsMergeParams, currentUserAccountID: currentUserPersonalDetails.accountID, currentUserLogin: currentUserPersonalDetails?.login ?? ''});
8484
if (isSuperWideRHPDisplayed) {
8585
Navigation.dismissToSuperWideRHP();
8686
return;
8787
}
8888
Navigation.dismissModal();
89-
}, [reportAction?.childReportID, transactionsMergeParams, isSuperWideRHPDisplayed]);
89+
}, [reportAction?.childReportID, transactionsMergeParams, currentUserPersonalDetails.accountID, currentUserPersonalDetails?.login, isSuperWideRHPDisplayed]);
9090

9191
const handleResolveDuplicates = useCallback(() => {
9292
resolveDuplicates(transactionsMergeParams);

tests/actions/IOUTest/DuplicateTest.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {bulkDuplicateExpenses, bulkDuplicateReports, duplicateExpenseTransaction
77
import type {BulkDuplicateReportsParams, DuplicateReportParams} from '@libs/actions/IOU/Duplicate';
88
import initOnyxDerivedValues from '@libs/actions/OnyxDerived';
99
import {addComment, openReport} from '@libs/actions/Report';
10+
import type {MergeDuplicatesParams} from '@libs/API/parameters';
1011
import {WRITE_COMMANDS} from '@libs/API/types';
1112
import Navigation from '@libs/Navigation/Navigation';
1213
import {getLoginsByAccountIDs} from '@libs/PersonalDetailsUtils';
@@ -186,7 +187,7 @@ describe('actions/Duplicate', () => {
186187
await Onyx.set(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${childReportID}`, {});
187188
await waitForBatchedUpdates();
188189

189-
const mergeParams = {
190+
const mergeParams: MergeDuplicatesParams = {
190191
transactionID: mainTransactionID,
191192
transactionIDList: duplicateTransactionIDs,
192193
created: '2024-01-01 12:00:00',
@@ -203,7 +204,7 @@ describe('actions/Duplicate', () => {
203204
};
204205

205206
// When: Call mergeDuplicates
206-
mergeDuplicates(mergeParams);
207+
mergeDuplicates({...mergeParams, currentUserLogin: RORY_EMAIL, currentUserAccountID: RORY_ACCOUNT_ID});
207208
await waitForBatchedUpdates();
208209

209210
// Then: Verify main transaction was updated
@@ -267,7 +268,7 @@ describe('actions/Duplicate', () => {
267268
await Onyx.set(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, {});
268269
await waitForBatchedUpdates();
269270

270-
const mergeParams = {
271+
const mergeParams: MergeDuplicatesParams = {
271272
transactionID: mainTransactionID,
272273
transactionIDList: [],
273274
created: '2024-01-01 12:00:00',
@@ -284,7 +285,7 @@ describe('actions/Duplicate', () => {
284285
};
285286

286287
// When: Call mergeDuplicates with empty duplicate list
287-
mergeDuplicates(mergeParams);
288+
mergeDuplicates({...mergeParams, currentUserLogin: RORY_EMAIL, currentUserAccountID: RORY_ACCOUNT_ID});
288289
await waitForBatchedUpdates();
289290

290291
// Then: Verify main transaction was still updated
@@ -318,7 +319,7 @@ describe('actions/Duplicate', () => {
318319
await Onyx.set(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, {});
319320
await waitForBatchedUpdates();
320321

321-
const mergeParams = {
322+
const mergeParams: MergeDuplicatesParams = {
322323
transactionID: mainTransactionID,
323324
transactionIDList: duplicateTransactionIDs,
324325
created: '2024-01-01 12:00:00',
@@ -335,7 +336,7 @@ describe('actions/Duplicate', () => {
335336
};
336337

337338
// When: Call mergeDuplicates without expense report
338-
mergeDuplicates(mergeParams);
339+
mergeDuplicates({...mergeParams, currentUserLogin: RORY_EMAIL, currentUserAccountID: RORY_ACCOUNT_ID});
339340
await waitForBatchedUpdates();
340341

341342
// Then: Verify function completed without errors
@@ -519,7 +520,7 @@ describe('actions/Duplicate', () => {
519520

520521
await waitForBatchedUpdates();
521522

522-
const mergeParams = {
523+
const mergeParams: MergeDuplicatesParams = {
523524
transactionID: mainTransactionID,
524525
transactionIDList: duplicateTransactionIDs,
525526
created: '2024-01-01 12:00:00',
@@ -536,7 +537,7 @@ describe('actions/Duplicate', () => {
536537
};
537538

538539
// When: Call mergeDuplicates
539-
mergeDuplicates(mergeParams);
540+
mergeDuplicates({...mergeParams, currentUserLogin: RORY_EMAIL, currentUserAccountID: RORY_ACCOUNT_ID});
540541
await waitForBatchedUpdates();
541542

542543
// Then we expect the reportPreview to update with new childVisibleActionCount
@@ -618,7 +619,7 @@ describe('actions/Duplicate', () => {
618619
});
619620
await waitForBatchedUpdates();
620621

621-
const mergeParams = {
622+
const mergeParams: MergeDuplicatesParams = {
622623
transactionID: mainTransactionID,
623624
transactionIDList: duplicateTransactionIDs,
624625
transactionThreadReportID: optimisticTransactionThreadReportID,
@@ -636,7 +637,7 @@ describe('actions/Duplicate', () => {
636637
};
637638

638639
// When: Call mergeDuplicates with transactionThreadReportID
639-
mergeDuplicates(mergeParams);
640+
mergeDuplicates({...mergeParams, currentUserLogin: RORY_EMAIL, currentUserAccountID: RORY_ACCOUNT_ID});
640641
await waitForBatchedUpdates();
641642

642643
// Then: Verify the optimistic transaction thread report was created

0 commit comments

Comments
 (0)