Skip to content

Commit 59e18d3

Browse files
authored
Merge pull request Expensify#65420 from bernhardoj/fix/64121-original-tx-still-shows-after-split-in-search
Remove original transaction from search snapshot optimistically
2 parents ccd01b2 + 768311c commit 59e18d3

2 files changed

Lines changed: 62 additions & 6 deletions

File tree

src/libs/actions/IOU.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11685,7 +11685,6 @@ function saveSplitTransactions(draftTransaction: OnyxEntry<OnyxTypes.Transaction
1168511685

1168611686
const originalTransactionID = draftTransaction?.comment?.originalTransactionID ?? CONST.IOU.OPTIMISTIC_TRANSACTION_ID;
1168711687
const originalTransaction = allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${originalTransactionID}`];
11688-
const originalTransactionViolations = allTransactionViolations[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${originalTransactionID}`] ?? [];
1168911688
const iouActions = getIOUActionForTransactions([originalTransactionID], expenseReport?.reportID);
1169011689

1169111690
// This will be fixed as part of https://github.com/Expensify/Expensify/issues/507850
@@ -11827,10 +11826,7 @@ function saveSplitTransactions(draftTransaction: OnyxEntry<OnyxTypes.Transaction
1182711826
key: `${ONYXKEYS.COLLECTION.SNAPSHOT}${hash}`,
1182811827
value: {
1182911828
data: {
11830-
[`${ONYXKEYS.COLLECTION.TRANSACTION}${originalTransactionID}`]: {
11831-
...originalTransactionViolations,
11832-
reportID: CONST.REPORT.SPLIT_REPORT_ID,
11833-
},
11829+
[`${ONYXKEYS.COLLECTION.TRANSACTION}${originalTransactionID}`]: null,
1183411830
},
1183511831
},
1183611832
});
@@ -11840,7 +11836,7 @@ function saveSplitTransactions(draftTransaction: OnyxEntry<OnyxTypes.Transaction
1184011836
key: `${ONYXKEYS.COLLECTION.SNAPSHOT}${hash}`,
1184111837
value: {
1184211838
data: {
11843-
[`${ONYXKEYS.COLLECTION.TRANSACTION}${originalTransactionID}`]: originalTransactionViolations,
11839+
[`${ONYXKEYS.COLLECTION.TRANSACTION}${originalTransactionID}`]: originalTransaction,
1184411840
},
1184511841
},
1184611842
});

tests/actions/IOUTest.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2368,6 +2368,66 @@ describe('actions/IOU', () => {
23682368
});
23692369
expect(originalTransactionThread).toBe(undefined);
23702370
});
2371+
2372+
it('should remove the original transaction from the search snapshot data', async () => {
2373+
// Given a single expense
2374+
const expenseReport: Report = {
2375+
...createRandomReport(1),
2376+
type: CONST.REPORT.TYPE.EXPENSE,
2377+
};
2378+
const transaction: Transaction = {
2379+
amount: 100,
2380+
currency: 'USD',
2381+
transactionID: '1',
2382+
reportID: expenseReport.reportID,
2383+
created: DateUtils.getDBTime(),
2384+
merchant: 'test',
2385+
};
2386+
const transactionThread: Report = {
2387+
...createRandomReport(2),
2388+
};
2389+
const iouAction: ReportAction = {
2390+
...buildOptimisticIOUReportAction({
2391+
type: CONST.IOU.REPORT_ACTION_TYPE.CREATE,
2392+
amount: transaction.amount,
2393+
currency: transaction.currency,
2394+
comment: '',
2395+
participants: [],
2396+
transactionID: transaction.transactionID,
2397+
iouReportID: expenseReport.reportID,
2398+
}),
2399+
childReportID: transactionThread.reportID,
2400+
};
2401+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT}${expenseReport.reportID}`, expenseReport);
2402+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT}${transactionThread.reportID}`, transactionThread);
2403+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${expenseReport.reportID}`, {
2404+
[iouAction.reportActionID]: iouAction,
2405+
});
2406+
const draftTransaction: OnyxEntry<Transaction> = {
2407+
...transaction,
2408+
comment: {
2409+
originalTransactionID: transaction.transactionID,
2410+
},
2411+
};
2412+
2413+
// When splitting the expense
2414+
const hash = 1;
2415+
saveSplitTransactions(draftTransaction, hash);
2416+
2417+
await waitForBatchedUpdates();
2418+
2419+
// Then the original expense/transaction should be removed from the search snapshot data
2420+
const searchSnapshot = await new Promise<OnyxEntry<SearchResults>>((resolve) => {
2421+
const connection = Onyx.connect({
2422+
key: `${ONYXKEYS.COLLECTION.SNAPSHOT}${hash}`,
2423+
callback: (val) => {
2424+
Onyx.disconnect(connection);
2425+
resolve(val);
2426+
},
2427+
});
2428+
});
2429+
expect(searchSnapshot?.data[`${ONYXKEYS.COLLECTION.TRANSACTION}${transaction.transactionID}`]).toBe(undefined);
2430+
});
23712431
});
23722432

23732433
describe('payMoneyRequestElsewhere', () => {

0 commit comments

Comments
 (0)