Skip to content

Commit 8a8c088

Browse files
committed
Fix receipt removal
1 parent 186d428 commit 8a8c088

2 files changed

Lines changed: 30 additions & 3 deletions

File tree

src/libs/actions/TransactionEdit.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {formatCurrentUserToAttendee} from '@libs/IOUUtils';
55
import CONST from '@src/CONST';
66
import ONYXKEYS from '@src/ONYXKEYS';
77
import type {PersonalDetails, Transaction} from '@src/types/onyx';
8+
import type CollectionDataSet from '@src/types/utils/CollectionDataSet';
89
import {generateTransactionID, getDraftTransactions} from './Transaction';
910

1011
let connection: Connection;
@@ -112,6 +113,10 @@ function removeDraftTransactions(shouldExcludeInitialTransaction = false) {
112113
return Onyx.multiSet(draftTransactionsSet);
113114
}
114115

116+
function updateDraftTransactions(transactions: CollectionDataSet<typeof ONYXKEYS.COLLECTION.TRANSACTION_DRAFT>) {
117+
Onyx.mergeCollection(ONYXKEYS.COLLECTION.TRANSACTION_DRAFT, transactions);
118+
}
119+
115120
function removeTransactionReceipt(transactionID: string | undefined) {
116121
if (!transactionID) {
117122
return;
@@ -153,5 +158,6 @@ export {
153158
removeTransactionReceipt,
154159
removeDraftTransactions,
155160
removeDraftSplitTransaction,
161+
updateDraftTransactions,
156162
buildOptimisticTransactionAndCreateDraft,
157163
};

src/pages/iou/request/step/IOURequestStepScan/ReceiptViewModal/index.tsx

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import useLocalize from '@hooks/useLocalize';
1212
import useOnyx from '@hooks/useOnyx';
1313
import useThemeStyles from '@hooks/useThemeStyles';
1414
import Navigation from '@libs/Navigation/Navigation';
15+
import {getTransactionOrDraftTransaction} from '@libs/TransactionUtils';
1516
import type {ReceiptFile} from '@pages/iou/request/step/IOURequestStepScan/types';
16-
import {removeTransactionReceipt} from '@userActions/TransactionEdit';
17+
import {removeDraftTransaction, removeTransactionReceipt, updateDraftTransactions} from '@userActions/TransactionEdit';
1718
import CONST from '@src/CONST';
1819
import ONYXKEYS from '@src/ONYXKEYS';
1920
import type {Route} from '@src/ROUTES';
@@ -66,11 +67,31 @@ function ReceiptViewModal({route}: ReceiptViewModalProps) {
6667
}
6768

6869
InteractionManager.runAfterInteractions(() => {
69-
removeTransactionReceipt(currentReceipt.transactionID);
70+
if (currentReceipt.transactionID === CONST.IOU.OPTIMISTIC_TRANSACTION_ID) {
71+
if (receipts.length === 1) {
72+
removeTransactionReceipt(currentReceipt.transactionID);
73+
return;
74+
}
75+
76+
const secondTransactionID = receipts.at(1)?.transactionID;
77+
const secondTransaction = secondTransactionID ? getTransactionOrDraftTransaction(secondTransactionID) : undefined;
78+
79+
if (secondTransaction) {
80+
updateDraftTransactions({
81+
[`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${CONST.IOU.OPTIMISTIC_TRANSACTION_ID}`]: {
82+
...secondTransaction,
83+
transactionID: CONST.IOU.OPTIMISTIC_TRANSACTION_ID,
84+
},
85+
[`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${secondTransactionID}`]: null,
86+
});
87+
}
88+
return;
89+
}
90+
removeDraftTransaction(currentReceipt.transactionID);
7091
});
7192

7293
Navigation.goBack();
73-
}, [currentReceipt]);
94+
}, [currentReceipt, receipts]);
7495

7596
const handleCloseConfirmModal = () => {
7697
setIsDeleteReceiptConfirmModalVisible(false);

0 commit comments

Comments
 (0)