diff --git a/src/hooks/useReceiptScanDrop.tsx b/src/hooks/useReceiptScanDrop.tsx index 5e411efe86a4..3909f553b5e3 100644 --- a/src/hooks/useReceiptScanDrop.tsx +++ b/src/hooks/useReceiptScanDrop.tsx @@ -58,7 +58,6 @@ function useReceiptScanDrop() { parentReport: undefined, newIouRequestType: CONST.IOU.REQUEST_TYPE.SCAN, currentDate, - currentUserPersonalDetails, hasOnlyPersonalPolicies, draftTransactionIDs, }); @@ -72,7 +71,6 @@ function useReceiptScanDrop() { ? (initialTransaction as Partial) : buildOptimisticTransactionAndCreateDraft({ initialTransaction: initialTransaction as Partial, - currentUserPersonalDetails, reportID: newReportID, }); const transactionID = transaction.transactionID ?? CONST.IOU.OPTIMISTIC_TRANSACTION_ID; diff --git a/src/hooks/useResetIOUType.ts b/src/hooks/useResetIOUType.ts index 5910689fb6c4..7bcc887792e1 100644 --- a/src/hooks/useResetIOUType.ts +++ b/src/hooks/useResetIOUType.ts @@ -17,7 +17,6 @@ import {validTransactionDraftIDsSelector} from '@selectors/TransactionDraft'; import {useRef} from 'react'; import {Keyboard} from 'react-native'; -import useCurrentUserPersonalDetails from './useCurrentUserPersonalDetails'; import useDefaultParticipants from './useDefaultParticipants'; import useOdometerDraftHydrator from './useOdometerDraftHydrator'; import useOnyx from './useOnyx'; @@ -84,7 +83,6 @@ function useResetIOUType({ const [draftTransactionIDs] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_DRAFT, {selector: validTransactionDraftIDsSelector}); const personalPolicy = usePersonalPolicy(); - const currentUserPersonalDetails = useCurrentUserPersonalDetails(); const hydrateOdometerOnLanding = useOdometerDraftHydrator({ transaction, @@ -135,7 +133,6 @@ function useResetIOUType({ parentReport, currentDate, lastSelectedDistanceRates, - currentUserPersonalDetails, hasOnlyPersonalPolicies: hasOnlyPersonalPolicies ?? true, draftTransactionIDs, defaultParticipants: isSelfDMDefault ? undefined : defaultParticipants, diff --git a/src/hooks/useSearchBulkActions.ts b/src/hooks/useSearchBulkActions.ts index 3f86744068c3..1a1484172ce1 100644 --- a/src/hooks/useSearchBulkActions.ts +++ b/src/hooks/useSearchBulkActions.ts @@ -2207,7 +2207,19 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) { text: translate('common.merge'), icon: expensifyIcons.ArrowCollapse, value: CONST.SEARCH.BULK_ACTION_TYPES.MERGE, - onSelected: () => setupMergeTransactionDataAndNavigate(transactionID, searchedTransactions, localeCompare, getCurrencyDecimals, reports, false, true), + onSelected: () => + setupMergeTransactionDataAndNavigate( + transactionID, + searchedTransactions, + localeCompare, + getCurrencyDecimals, + reports, + false, + true, + undefined, + accountID, + personalDetails, + ), }); } } diff --git a/src/hooks/useSelectedTransactionsActions.ts b/src/hooks/useSelectedTransactionsActions.ts index 8349f70df6c4..1073f25ba239 100644 --- a/src/hooks/useSelectedTransactionsActions.ts +++ b/src/hooks/useSelectedTransactionsActions.ts @@ -128,6 +128,7 @@ function useSelectedTransactionsActions({ const {isBetaEnabled} = usePermissions(); const {deleteTransactions, shouldOpenSplitExpenseEditFlowOnDelete} = useDeleteTransactions({report, reportActions, policy}); const {login, accountID: currentUserAccountID} = useCurrentUserPersonalDetails(); + const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST); const defaultExpensePolicy = useDefaultExpensePolicy(); const {isProduction} = useEnvironment(); @@ -486,6 +487,8 @@ function useSelectedTransactionsActions({ false, isOnSearch, selectedTransactionsList.length > 1 ? [policy, policy] : undefined, + currentUserAccountID, + personalDetails, ), }); } diff --git a/src/libs/MergeTransactionUtils.ts b/src/libs/MergeTransactionUtils.ts index 8f5bf7215178..a5cf273c0872 100644 --- a/src/libs/MergeTransactionUtils.ts +++ b/src/libs/MergeTransactionUtils.ts @@ -225,12 +225,17 @@ function getMergeableDataAndConflictFields( searchReports: Array> = [], targetTransactionPolicy?: OnyxEntry, sourceTransactionPolicy?: OnyxEntry, + targetReportOwnerAsAttendee?: Attendee, + sourceReportOwnerAsAttendee?: Attendee, ) { const conflictFields: string[] = []; const mergeableData: Record = {}; - const targetTransactionDetails = getTransactionDetails(targetTransaction); - const sourceTransactionDetails = getTransactionDetails(sourceTransaction); + // Resolve the report-owner fallback the same way the display path (buildMergeFieldsData) does, so an expense + // with no stored attendee is compared as [owner] instead of [] and doesn't produce a false attendee conflict + // against an expense whose attendee is that same owner. + const targetTransactionDetails = getTransactionDetails(targetTransaction, undefined, undefined, undefined, undefined, targetReportOwnerAsAttendee); + const sourceTransactionDetails = getTransactionDetails(sourceTransaction, undefined, undefined, undefined, undefined, sourceReportOwnerAsAttendee); for (const field of getMergeFields(targetTransaction)) { const targetValue = getMergeFieldValue(targetTransactionDetails, targetTransaction, field); diff --git a/src/libs/actions/IOU/MoneyRequest.ts b/src/libs/actions/IOU/MoneyRequest.ts index 81113f936dcd..4c3f592490ab 100644 --- a/src/libs/actions/IOU/MoneyRequest.ts +++ b/src/libs/actions/IOU/MoneyRequest.ts @@ -6,7 +6,7 @@ import {WRITE_COMMANDS} from '@libs/API/types'; import DateUtils from '@libs/DateUtils'; import DistanceRequestUtils from '@libs/DistanceRequestUtils'; import {getGPSRoutes, getGPSWaypoints} from '@libs/GPSDraftDetailsUtils'; -import {formatCurrentUserToAttendee, getExistingTransactionID} from '@libs/IOUUtils'; +import {getExistingTransactionID} from '@libs/IOUUtils'; import Log from '@libs/Log'; import Navigation from '@libs/Navigation/Navigation'; import {getParticipantsOption, getReportOption} from '@libs/OptionsListUtils'; @@ -57,7 +57,6 @@ import type { } from '@src/types/onyx'; import type {ReportAttributesDerivedValue} from '@src/types/onyx/DerivedValues'; import type {Accountant, Attendee, Participant} from '@src/types/onyx/IOU'; -import type {CurrentUserPersonalDetails} from '@src/types/onyx/PersonalDetails'; import type {Unit} from '@src/types/onyx/Policy'; import type {Comment, Receipt} from '@src/types/onyx/Transaction'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; @@ -277,7 +276,6 @@ type InitMoneyRequestParams = { parentReport: OnyxEntry; currentDate: string | undefined; lastSelectedDistanceRates?: OnyxEntry; - currentUserPersonalDetails: CurrentUserPersonalDetails; isTrackDistanceExpense?: boolean; hasOnlyPersonalPolicies: boolean; draftTransactionIDs?: string[]; @@ -308,7 +306,6 @@ function initMoneyRequest({ parentReport, currentDate, lastSelectedDistanceRates, - currentUserPersonalDetails, hasOnlyPersonalPolicies, draftTransactionIDs, defaultParticipants, @@ -337,9 +334,7 @@ function initMoneyRequest({ return; } - const comment: Comment = { - attendees: formatCurrentUserToAttendee(currentUserPersonalDetails), - }; + const comment: Comment = {}; let requestCategory: string | null = null; // Set up initial distance expense state diff --git a/src/libs/actions/MergeTransaction.ts b/src/libs/actions/MergeTransaction.ts index 37559d315670..d32c9e10747c 100644 --- a/src/libs/actions/MergeTransaction.ts +++ b/src/libs/actions/MergeTransaction.ts @@ -31,10 +31,11 @@ import { } from '@libs/ReportUtils'; import CONST from '@src/CONST'; -import {isDistanceRequest, isTransactionPendingDelete} from '@src/libs/TransactionUtils'; +import {getReportOwnerAccountIDAsAttendee, getReportOwnerAsAttendee, isDistanceRequest, isTransactionPendingDelete} from '@src/libs/TransactionUtils'; import ONYXKEYS from '@src/ONYXKEYS'; import {DYNAMIC_ROUTES} from '@src/ROUTES'; -import type {CardList, MergeTransaction, Policy, PolicyCategories, PolicyTagLists, Report, ReportActions, Transaction, TransactionViolations} from '@src/types/onyx'; +import type {CardList, MergeTransaction, PersonalDetailsList, Policy, PolicyCategories, PolicyTagLists, Report, ReportActions, Transaction, TransactionViolations} from '@src/types/onyx'; +import type {Attendee} from '@src/types/onyx/IOU'; import type {OnyxCollection, OnyxEntry, OnyxMergeInput, OnyxUpdate} from 'react-native-onyx'; @@ -47,6 +48,20 @@ import {getCleanUpTransactionThreadReportOnyxData} from './IOU/DeleteMoneyReques import {getDeleteTrackExpenseInformation} from './IOU/TrackExpense'; import {getUpdateMoneyRequestParams, getUpdateTrackExpenseParams} from './IOU/UpdateMoneyRequest'; +/** + * Resolve a transaction's report owner as a default attendee, mirroring the `useReportOwnerAsAttendee` hook so the + * non-React merge entry point can apply the same empty-attendee fallback the details/receipt pages use. The Onyx data + * is passed in by the caller rather than read from a module subscription. + */ +function getReportOwnerAsAttendeeForTransaction( + transaction: OnyxEntry, + currentUserAccountID: number | undefined, + personalDetails: OnyxEntry, +): Attendee | undefined { + const ownerAccountID = getReportOwnerAccountIDAsAttendee(transaction, currentUserAccountID); + return getReportOwnerAsAttendee(ownerAccountID ? (personalDetails?.[ownerAccountID] ?? undefined) : undefined); +} + /** * Setup merge transaction data for merging flow */ @@ -91,6 +106,8 @@ function setupMergeTransactionDataAndNavigate( isSelectingSourceTransaction?: boolean, isOnSearch?: boolean, policies?: Array>, + currentUserAccountID?: number, + personalDetails?: OnyxEntry, ) { if (!transactions.length || transactions.length > 2) { return; @@ -139,6 +156,8 @@ function setupMergeTransactionDataAndNavigate( searchReports, targetTransactionPolicy, sourceTransactionPolicy, + getReportOwnerAsAttendeeForTransaction(targetTransaction, currentUserAccountID, personalDetails), + getReportOwnerAsAttendeeForTransaction(sourceTransaction, currentUserAccountID, personalDetails), ); if (!conflictFields.length) { // If there are no conflict fields, we should set mergeable data and navigate to the confirmation page diff --git a/src/libs/actions/TransactionEdit.ts b/src/libs/actions/TransactionEdit.ts index adee65d7fefe..52d6f73bc2a4 100644 --- a/src/libs/actions/TransactionEdit.ts +++ b/src/libs/actions/TransactionEdit.ts @@ -1,9 +1,8 @@ -import {formatCurrentUserToAttendee} from '@libs/IOUUtils'; import revokeOdometerImageUri from '@libs/OdometerUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type {PersonalDetails, Transaction} from '@src/types/onyx'; +import type {Transaction} from '@src/types/onyx'; import type {Connection, OnyxEntry} from 'react-native-onyx'; @@ -170,18 +169,16 @@ function removeTransactionReceipt(transactionID: string | undefined) { type BuildOptimisticTransactionParams = { initialTransaction: Partial; - currentUserPersonalDetails: PersonalDetails; reportID: string; }; -function buildOptimisticTransactionAndCreateDraft({initialTransaction, currentUserPersonalDetails, reportID}: BuildOptimisticTransactionParams): Transaction { +function buildOptimisticTransactionAndCreateDraft({initialTransaction, reportID}: BuildOptimisticTransactionParams): Transaction { const newTransactionID = generateTransactionID(); const {currency, iouRequestType, isFromGlobalCreate, isFromFloatingActionButton} = initialTransaction ?? {}; const newTransaction = { amount: 0, created: format(new Date(), 'yyyy-MM-dd'), currency, - comment: {attendees: formatCurrentUserToAttendee(currentUserPersonalDetails)}, iouRequestType, reportID, transactionID: newTransactionID, diff --git a/src/pages/Share/SubmitDetailsPage.tsx b/src/pages/Share/SubmitDetailsPage.tsx index 722674c377d9..b6df6bf096fb 100644 --- a/src/pages/Share/SubmitDetailsPage.tsx +++ b/src/pages/Share/SubmitDetailsPage.tsx @@ -173,14 +173,13 @@ function SubmitDetailsPage({ report, parentReport, currentDate, - currentUserPersonalDetails, hasOnlyPersonalPolicies, draftTransactionIDs, }); // Populate transaction.participants so IOURequestStepReport can highlight the destination (mirrors other expense flows). setMoneyRequestParticipantsFromReport(CONST.IOU.OPTIMISTIC_TRANSACTION_ID, report, currentUserPersonalDetails.accountID); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [reportOrAccountID, policy, personalPolicy, report, parentReport, currentDate, currentUserPersonalDetails, hasOnlyPersonalPolicies]); + }, [reportOrAccountID, policy, personalPolicy, report, parentReport, currentDate, currentUserPersonalDetails.accountID, hasOnlyPersonalPolicies]); // Use the branch-aware values computed above: for a share that needs conversion (e.g. HEIC), these resolve to the // converted JPEG from VALIDATED_FILE_OBJECT; otherwise they fall back to the raw attachment. Re-deriving from diff --git a/src/pages/TransactionMerge/DynamicDetailsReviewPage.tsx b/src/pages/TransactionMerge/DynamicDetailsReviewPage.tsx index efa425168ffc..4e3262563ead 100644 --- a/src/pages/TransactionMerge/DynamicDetailsReviewPage.tsx +++ b/src/pages/TransactionMerge/DynamicDetailsReviewPage.tsx @@ -77,6 +77,8 @@ function DynamicDetailsReviewPage({route}: DynamicDetailsReviewPageProps) { [targetTransactionReport, sourceTransactionReport], targetTransactionPolicy, sourceTransactionPolicy, + targetReportOwnerAsAttendee, + sourceReportOwnerAsAttendee, ); setMergeTransactionKey(transactionID, mergeableData); @@ -91,6 +93,8 @@ function DynamicDetailsReviewPage({route}: DynamicDetailsReviewPageProps) { targetTransactionPolicy, sourceTransactionPolicy, getCurrencyDecimals, + targetReportOwnerAsAttendee, + sourceReportOwnerAsAttendee, ]); // Handle selection diff --git a/src/pages/TransactionMerge/DynamicReceiptReviewPage.tsx b/src/pages/TransactionMerge/DynamicReceiptReviewPage.tsx index e871859eedcc..24bef939e32e 100644 --- a/src/pages/TransactionMerge/DynamicReceiptReviewPage.tsx +++ b/src/pages/TransactionMerge/DynamicReceiptReviewPage.tsx @@ -12,6 +12,7 @@ import useDynamicBackPath from '@hooks/useDynamicBackPath'; import useLocalize from '@hooks/useLocalize'; import useMergeTransactions from '@hooks/useMergeTransactions'; import useOnyx from '@hooks/useOnyx'; +import useReportOwnerAsAttendee from '@hooks/useReportOwnerAsAttendee'; import useThemeStyles from '@hooks/useThemeStyles'; import {setMergeTransactionKey} from '@libs/actions/MergeTransaction'; @@ -45,6 +46,8 @@ function DynamicReceiptReviewPage({route}: DynamicReceiptReviewPageProps) { const [mergeTransaction, mergeTransactionMetadata] = useOnyx(`${ONYXKEYS.COLLECTION.MERGE_TRANSACTION}${getNonEmptyStringOnyxID(transactionID)}`); const {targetTransaction, sourceTransaction, targetTransactionPolicy, sourceTransactionPolicy} = useMergeTransactions({mergeTransaction}); + const targetReportOwnerAsAttendee = useReportOwnerAsAttendee(targetTransaction); + const sourceReportOwnerAsAttendee = useReportOwnerAsAttendee(sourceTransaction); const transactions = [targetTransaction, sourceTransaction].filter((transaction): transaction is Transaction => !!transaction); @@ -65,6 +68,8 @@ function DynamicReceiptReviewPage({route}: DynamicReceiptReviewPageProps) { [], targetTransactionPolicy, sourceTransactionPolicy, + targetReportOwnerAsAttendee, + sourceReportOwnerAsAttendee, ); if (!conflictFields.length) { // If there are no conflict fields, we should set mergeable data and navigate to the confirmation page diff --git a/src/pages/TransactionMerge/MergeTransactionsListContent.tsx b/src/pages/TransactionMerge/MergeTransactionsListContent.tsx index 2ba297f86485..5d6179a28bb0 100644 --- a/src/pages/TransactionMerge/MergeTransactionsListContent.tsx +++ b/src/pages/TransactionMerge/MergeTransactionsListContent.tsx @@ -47,6 +47,7 @@ function MergeTransactionsListContent({transactionID, mergeTransaction}: MergeTr const [searchValue, debouncedSearchValue, setSearchValue] = useDebouncedState(''); const [session] = useOnyx(ONYXKEYS.SESSION); + const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST); const currentUserLogin = session?.email; const [transactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION); const {isOffline} = useNetwork(); @@ -163,10 +164,18 @@ function MergeTransactionsListContent({transactionID, mergeTransaction}: MergeTr } const reports = targetTransactionReport && sourceTransactionReport ? [targetTransactionReport, sourceTransactionReport] : undefined; - setupMergeTransactionDataAndNavigate(transactionID, [targetTransaction, sourceTransaction], localeCompare, getCurrencyDecimals, reports, true, undefined, [ - targetTransactionPolicy, - sourceTransactionPolicy, - ]); + setupMergeTransactionDataAndNavigate( + transactionID, + [targetTransaction, sourceTransaction], + localeCompare, + getCurrencyDecimals, + reports, + true, + undefined, + [targetTransactionPolicy, sourceTransactionPolicy], + session?.accountID, + personalDetails, + ); }; const confirmButtonOptions = { diff --git a/src/pages/inbox/report/ReportActionCompose/useReceiptDrop.ts b/src/pages/inbox/report/ReportActionCompose/useReceiptDrop.ts index 5dea32383b87..643766637e2c 100644 --- a/src/pages/inbox/report/ReportActionCompose/useReceiptDrop.ts +++ b/src/pages/inbox/report/ReportActionCompose/useReceiptDrop.ts @@ -76,7 +76,6 @@ function useReceiptDrop({reportID, report, shouldAddOrReplaceReceipt, transactio report, parentReport: newParentReport, currentDate, - currentUserPersonalDetails, hasOnlyPersonalPolicies, draftTransactionIDs, }); @@ -88,7 +87,6 @@ function useReceiptDrop({reportID, report, shouldAddOrReplaceReceipt, transactio ? (initialTransaction as Partial) : buildOptimisticTransactionAndCreateDraft({ initialTransaction: initialTransaction as Partial, - currentUserPersonalDetails, reportID, }); const newTransactionID = newTransaction?.transactionID ?? CONST.IOU.OPTIMISTIC_TRANSACTION_ID; diff --git a/src/pages/iou/request/step/IOURequestStepScan/components/ScanFromReport.tsx b/src/pages/iou/request/step/IOURequestStepScan/components/ScanFromReport.tsx index 8b23e8b949b7..4c8a3dbc278f 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/components/ScanFromReport.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/components/ScanFromReport.tsx @@ -69,7 +69,6 @@ function ScanFromReport({report, iouType, reportID, transactionID, transaction, getFileSource, initialTransaction: transaction, initialTransactionID: transactionID, - currentUserPersonalDetails, reportID, shouldAcceptMultipleFiles: true, isMultiScanEnabled, diff --git a/src/pages/iou/request/step/IOURequestStepScan/components/ScanGlobalCreate.tsx b/src/pages/iou/request/step/IOURequestStepScan/components/ScanGlobalCreate.tsx index cee4ed5dd559..28a68ada5e65 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/components/ScanGlobalCreate.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/components/ScanGlobalCreate.tsx @@ -58,7 +58,7 @@ function ScanGlobalCreate({iouType, backToReport, ...innerProps}: ScanGlobalCrea type ScanGlobalCreateInnerProps = Omit; -function ScanGlobalCreateInner({reportID, transactionID, transaction, currentUserPersonalDetails}: ScanGlobalCreateInnerProps) { +function ScanGlobalCreateInner({reportID, transactionID, transaction}: ScanGlobalCreateInnerProps) { const navigateGlobalCreate = useNavigateGlobalCreate(); const [draftTransactionIDs] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_DRAFT, { selector: validTransactionDraftIDsSelector, @@ -76,7 +76,6 @@ function ScanGlobalCreateInner({reportID, transactionID, transaction, currentUse getFileSource, initialTransaction: transaction, initialTransactionID: transactionID, - currentUserPersonalDetails, reportID, shouldAcceptMultipleFiles: true, isMultiScanEnabled, diff --git a/src/pages/iou/request/step/IOURequestStepScan/components/ScanSkipConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepScan/components/ScanSkipConfirmation.tsx index 7af6a2e499c5..f957e0f61931 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/components/ScanSkipConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/components/ScanSkipConfirmation.tsx @@ -376,7 +376,6 @@ function ScanSkipConfirmation({report, action, iouType, reportID, transactionID, getFileSource, initialTransaction: transaction, initialTransactionID: transactionID, - currentUserPersonalDetails, reportID, shouldAcceptMultipleFiles: true, isMultiScanEnabled, diff --git a/src/pages/iou/request/step/IOURequestStepScan/utils/buildReceiptFiles.ts b/src/pages/iou/request/step/IOURequestStepScan/utils/buildReceiptFiles.ts index a9689a1fb4c2..975ea2c48826 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/utils/buildReceiptFiles.ts +++ b/src/pages/iou/request/step/IOURequestStepScan/utils/buildReceiptFiles.ts @@ -7,7 +7,6 @@ import type {ReceiptFile} from '@pages/iou/request/step/IOURequestStepScan/types import {setMoneyRequestReceipt} from '@userActions/IOU/Receipt'; import {buildOptimisticTransactionAndCreateDraft, removeDraftTransactionsByIDs} from '@userActions/TransactionEdit'; -import type {CurrentUserPersonalDetails} from '@src/types/onyx/PersonalDetails'; import type Transaction from '@src/types/onyx/Transaction'; import type {FileObject} from '@src/types/utils/Attachment'; @@ -18,7 +17,6 @@ type BuildReceiptFilesParams = { getFileSource: (file: FileObject) => string; initialTransaction: OnyxEntry; initialTransactionID: string; - currentUserPersonalDetails: CurrentUserPersonalDetails; reportID: string; shouldAcceptMultipleFiles: boolean; isMultiScanEnabled: boolean; @@ -43,7 +41,6 @@ function buildReceiptFiles({ getFileSource, initialTransaction, initialTransactionID, - currentUserPersonalDetails, reportID, shouldAcceptMultipleFiles, isMultiScanEnabled, @@ -67,7 +64,6 @@ function buildReceiptFiles({ ? initialTransaction : buildOptimisticTransactionAndCreateDraft({ initialTransaction: initialTransaction as Partial, - currentUserPersonalDetails, reportID, }); diff --git a/tests/actions/IOU/MoneyRequestSettersTest.ts b/tests/actions/IOU/MoneyRequestSettersTest.ts index f8d511f5465e..1bc0b44088ec 100644 --- a/tests/actions/IOU/MoneyRequestSettersTest.ts +++ b/tests/actions/IOU/MoneyRequestSettersTest.ts @@ -21,18 +21,15 @@ import OnyxUpdateManager from '@src/libs/actions/OnyxUpdateManager'; import DateUtils from '@src/libs/DateUtils'; import ONYXKEYS from '@src/ONYXKEYS'; import type {LastSelectedDistanceRates, Policy, Report} from '@src/types/onyx'; -import type {CurrentUserPersonalDetails} from '@src/types/onyx/PersonalDetails'; import type Transaction from '@src/types/onyx/Transaction'; import type {OnyxEntry} from 'react-native-onyx'; /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import {format} from 'date-fns'; -import {SafeString} from 'expensify-common'; import Onyx from 'react-native-onyx'; import currencyList from '../../unit/currencyList.json'; -import createPersonalDetails from '../../utils/collections/personalDetails'; import createRandomPolicy, {createCategoryTaxExpenseRules} from '../../utils/collections/policies'; import {createRandomReport} from '../../utils/collections/reports'; import createRandomTransaction from '../../utils/collections/transaction'; @@ -128,14 +125,6 @@ const RORY_ACCOUNT_ID = 3; OnyxUpdateManager(); describe('actions/IOU', () => { - const currentUserPersonalDetails: CurrentUserPersonalDetails = { - ...createPersonalDetails(RORY_ACCOUNT_ID), - login: RORY_EMAIL, - email: RORY_EMAIL, - displayName: RORY_EMAIL, - avatar: 'https://example.com/avatar.jpg', - }; - beforeAll(() => { Onyx.init({ keys: ONYXKEYS, @@ -524,15 +513,7 @@ describe('actions/IOU', () => { }; const transactionResult: Transaction = { amount: 0, - comment: { - attendees: [ - { - email: currentUserPersonalDetails.email ?? '', - avatarUrl: SafeString(currentUserPersonalDetails.avatar) ?? '', - displayName: currentUserPersonalDetails.displayName ?? '', - }, - ], - }, + comment: {}, created: '2025-04-01', currency: 'USD', iouRequestType: 'manual', @@ -563,7 +544,6 @@ describe('actions/IOU', () => { report: fakeReport, parentReport: fakeParentReport, currentDate, - currentUserPersonalDetails, hasOnlyPersonalPolicies: false, draftTransactionIDs: [], }); @@ -586,7 +566,6 @@ describe('actions/IOU', () => { report: fakeReport, parentReport: fakeParentReport, currentDate, - currentUserPersonalDetails, hasOnlyPersonalPolicies: false, draftTransactionIDs: [], }); @@ -610,7 +589,6 @@ describe('actions/IOU', () => { report: fakeReport, parentReport: fakeParentReport, currentDate, - currentUserPersonalDetails, hasOnlyPersonalPolicies: false, draftTransactionIDs: [], }); @@ -644,7 +622,6 @@ describe('actions/IOU', () => { report: fakeReport, parentReport: fakeParentReport, currentDate, - currentUserPersonalDetails, hasOnlyPersonalPolicies: false, draftTransactionIDs: [otherDraftTransactionID], }); @@ -683,7 +660,6 @@ describe('actions/IOU', () => { report: fakeReport, parentReport: fakeParentReport, currentDate, - currentUserPersonalDetails, hasOnlyPersonalPolicies: false, draftTransactionIDs: [otherDraftTransactionID, CONST.IOU.OPTIMISTIC_TRANSACTION_ID], }); @@ -723,7 +699,6 @@ describe('actions/IOU', () => { report: fakeReport, parentReport: fakeParentReport, currentDate, - currentUserPersonalDetails, hasOnlyPersonalPolicies: false, draftTransactionIDs: [draftTransactionID1, draftTransactionID2], }); diff --git a/tests/unit/hooks/useSelectedTransactionsActions.test.ts b/tests/unit/hooks/useSelectedTransactionsActions.test.ts index bbdfcbf012e9..eecebaa4e42b 100644 --- a/tests/unit/hooks/useSelectedTransactionsActions.test.ts +++ b/tests/unit/hooks/useSelectedTransactionsActions.test.ts @@ -984,6 +984,17 @@ describe('useSelectedTransactionsActions', () => { mergeOption?.onSelected?.(); - expect(setupMergeTransactionDataAndNavigate).toHaveBeenCalledWith(transaction.transactionID, [transaction], mockLocalCompare, mockGetCurrencyDecimals, [], false, false, undefined); + expect(setupMergeTransactionDataAndNavigate).toHaveBeenCalledWith( + transaction.transactionID, + [transaction], + mockLocalCompare, + mockGetCurrencyDecimals, + [], + false, + false, + undefined, + CURRENT_USER_ACCOUNT_ID, + undefined, + ); }); });