diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index f35cc522ba76..f2584cb8accd 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -1109,6 +1109,21 @@ function updateMoneyRequestDate(transactionID, transactionThreadReportID, val) { API.write('UpdateMoneyRequestDate', params, onyxData); } +/** + * Updates the merchant field of a money request + * + * @param {String} transactionID + * @param {Number} transactionThreadReportID + * @param {String} val + */ +function updateMoneyRequestMerchant(transactionID, transactionThreadReportID, val) { + const transactionChanges = { + merchant: val, + }; + const {params, onyxData} = getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, transactionChanges, true); + API.write('UpdateMoneyRequestMerchant', params, onyxData); +} + /** * Updates the created date of a money request * @@ -3590,6 +3605,7 @@ export { setUpDistanceTransaction, navigateToNextPage, updateMoneyRequestDate, + updateMoneyRequestMerchant, updateMoneyRequestTag, updateMoneyRequestAmountAndCurrency, replaceReceipt, diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js index bc05c110ab2f..b322f4eb106c 100644 --- a/src/pages/EditRequestPage.js +++ b/src/pages/EditRequestPage.js @@ -145,6 +145,29 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep [transaction, report], ); + const saveMerchant = useCallback( + ({merchant: newMerchant}) => { + const newTrimmedMerchant = newMerchant.trim(); + + // In case the merchant hasn't been changed, do not make the API request. + // In case the merchant has been set to empty string while current merchant is partial, do nothing too. + if (newTrimmedMerchant === transactionMerchant || (newTrimmedMerchant === '' && transactionMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT)) { + Navigation.dismissModal(); + return; + } + + // This is possible only in case of IOU requests. + if (newTrimmedMerchant === '') { + IOU.updateMoneyRequestMerchant(transaction.transactionID, report.reportID, CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT); + return; + } + + IOU.updateMoneyRequestMerchant(transaction.transactionID, report.reportID, newMerchant); + Navigation.dismissModal(); + }, + [transactionMerchant, transaction, report], + ); + const saveTag = useCallback( ({tag: newTag}) => { let updatedTag = newTag; @@ -203,23 +226,7 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep { - const newTrimmedMerchant = transactionChanges.merchant.trim(); - - // In case the merchant hasn't been changed, do not make the API request. - // In case the merchant has been set to empty string while current merchant is partial, do nothing too. - if (newTrimmedMerchant === transactionMerchant || (newTrimmedMerchant === '' && transactionMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT)) { - Navigation.dismissModal(); - return; - } - - // This is possible only in case of IOU requests. - if (newTrimmedMerchant === '') { - editMoneyRequest({merchant: CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT}); - return; - } - editMoneyRequest({merchant: newTrimmedMerchant}); - }} + onSubmit={saveMerchant} /> ); }