From c4f0a672699f9b24243a8d5cc1be729c8aec8139 Mon Sep 17 00:00:00 2001 From: Dylan Date: Fri, 2 Feb 2024 15:39:45 +0700 Subject: [PATCH 01/24] remove old merchant page --- src/ROUTES.ts | 6 +- .../MoneyRequestConfirmationList.js | 14 +- ...oraryForRefactorRequestConfirmationList.js | 8 +- .../ReportActionItem/MoneyRequestView.js | 10 +- .../AppNavigator/ModalStackNavigators.tsx | 1 - src/libs/Navigation/linkingConfig/config.ts | 1 - src/libs/Navigation/types.ts | 3 +- src/pages/EditRequestMerchantPage.js | 79 ---------- src/pages/EditRequestPage.js | 42 ++---- src/pages/EditSplitBillPage.js | 22 ++- src/pages/iou/MoneyRequestMerchantPage.js | 139 ------------------ 11 files changed, 50 insertions(+), 275 deletions(-) delete mode 100644 src/pages/EditRequestMerchantPage.js delete mode 100644 src/pages/iou/MoneyRequestMerchantPage.js diff --git a/src/ROUTES.ts b/src/ROUTES.ts index a84dc9c8f9ae8..0679da27028a2 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -365,9 +365,9 @@ const ROUTES = { getUrlWithBackToParam(`create/${iouType}/distance/${transactionID}/${reportID}`, backTo), }, MONEY_REQUEST_STEP_MERCHANT: { - route: 'create/:iouType/merchant/:transactionID/:reportID', - getRoute: (iouType: ValueOf, transactionID: string, reportID: string, backTo = '') => - getUrlWithBackToParam(`create/${iouType}/merchant/${transactionID}/${reportID}`, backTo), + route: ':action/:iouType/merchant/:transactionID/:reportID', + getRoute: (action: ValueOf, iouType: ValueOf, transactionID: string, reportID: string, backTo = '') => + getUrlWithBackToParam(`${action}/${iouType}/merchant/${transactionID}/${reportID}`, backTo), }, MONEY_REQUEST_STEP_PARTICIPANTS: { route: 'create/:iouType/participants/:transactionID/:reportID', diff --git a/src/components/MoneyRequestConfirmationList.js b/src/components/MoneyRequestConfirmationList.js index afabb40fd9f48..034cb6f8c1d38 100755 --- a/src/components/MoneyRequestConfirmationList.js +++ b/src/components/MoneyRequestConfirmationList.js @@ -723,11 +723,15 @@ function MoneyRequestConfirmationList(props) { style={[styles.moneyRequestMenuItem]} titleStyle={styles.flex1} onPress={() => { - if (props.isEditingSplitBill) { - Navigation.navigate(ROUTES.EDIT_SPLIT_BILL.getRoute(props.reportID, props.reportActionID, CONST.EDIT_REQUEST_FIELD.MERCHANT)); - return; - } - Navigation.navigate(ROUTES.MONEY_REQUEST_MERCHANT.getRoute(props.iouType, props.reportID)); + Navigation.navigate( + ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute( + CONST.IOU.ACTION.EDIT, + props.iouType, + transaction.transactionID, + props.reportID, + Navigation.getActiveRouteWithoutParams(), + ), + ); }} disabled={didConfirm} interactive={!props.isReadOnly} diff --git a/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js b/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js index 2aff0444a59e7..0b8cf910923f6 100755 --- a/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js +++ b/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js @@ -711,11 +711,7 @@ function MoneyTemporaryForRefactorRequestConfirmationList({ style={[styles.moneyRequestMenuItem]} titleStyle={styles.flex1} onPress={() => { - if (isEditingSplitBill) { - Navigation.navigate(ROUTES.EDIT_SPLIT_BILL.getRoute(reportID, reportActionID, CONST.EDIT_REQUEST_FIELD.MERCHANT)); - return; - } - Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(iouType, transaction.transactionID, reportID, Navigation.getActiveRouteWithoutParams())); + Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(CONST.IOU.ACTION.CREATE, iouType, transaction.transactionID, reportID, Navigation.getActiveRouteWithoutParams())); }} disabled={didConfirm} interactive={!isReadOnly} @@ -766,7 +762,7 @@ function MoneyTemporaryForRefactorRequestConfirmationList({ Navigation.navigate(ROUTES.EDIT_SPLIT_BILL.getRoute(reportID, reportActionID, CONST.EDIT_REQUEST_FIELD.MERCHANT)); return; } - Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(iouType, transaction.transactionID, reportID, Navigation.getActiveRouteWithoutParams())); + Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(CONST.IOU.ACTION.CREATE, iouType, transaction.transactionID, reportID, Navigation.getActiveRouteWithoutParams())); }} disabled={didConfirm} interactive={!isReadOnly} diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index e03dd6e4744c2..794ae6383e583 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -320,7 +320,15 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate interactive={canEditMerchant} shouldShowRightIcon={canEditMerchant} titleStyle={styles.flex1} - onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.MERCHANT))} + onPress={() => Navigation.navigate( + ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute( + CONST.IOU.ACTION.EDIT, + CONST.IOU.TYPE.REQUEST, + transaction.transactionID, + report.reportID, + Navigation.getActiveRouteWithoutParams(), + ), + )} brickRoadIndicator={hasViolations('merchant') || (hasErrors && isEmptyMerchant && isPolicyExpenseChat) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isPolicyExpenseChat && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx index 4606f867c3fc1..01479cc44fa6f 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx @@ -102,7 +102,6 @@ const MoneyRequestModalStackNavigator = createModalStackNavigator require('../../../pages/iou/MoneyRequestDescriptionPage').default as React.ComponentType, [SCREENS.MONEY_REQUEST.CATEGORY]: () => require('../../../pages/iou/MoneyRequestCategoryPage').default as React.ComponentType, [SCREENS.MONEY_REQUEST.TAG]: () => require('../../../pages/iou/MoneyRequestTagPage').default as React.ComponentType, - [SCREENS.MONEY_REQUEST.MERCHANT]: () => require('../../../pages/iou/MoneyRequestMerchantPage').default as React.ComponentType, [SCREENS.IOU_SEND.ADD_BANK_ACCOUNT]: () => require('../../../pages/AddPersonalBankAccountPage').default as React.ComponentType, [SCREENS.IOU_SEND.ADD_DEBIT_CARD]: () => require('../../../pages/settings/Wallet/AddDebitCardPage').default as React.ComponentType, [SCREENS.IOU_SEND.ENABLE_PAYMENTS]: () => require('../../../pages/EnablePayments/EnablePaymentsPage').default as React.ComponentType, diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index f1c9c316fe930..f3e241c491b62 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -407,7 +407,6 @@ const config: LinkingOptions['config'] = { [SCREENS.MONEY_REQUEST.DESCRIPTION]: ROUTES.MONEY_REQUEST_DESCRIPTION.route, [SCREENS.MONEY_REQUEST.CATEGORY]: ROUTES.MONEY_REQUEST_CATEGORY.route, [SCREENS.MONEY_REQUEST.TAG]: ROUTES.MONEY_REQUEST_TAG.route, - [SCREENS.MONEY_REQUEST.MERCHANT]: ROUTES.MONEY_REQUEST_MERCHANT.route, [SCREENS.MONEY_REQUEST.RECEIPT]: ROUTES.MONEY_REQUEST_RECEIPT.route, [SCREENS.MONEY_REQUEST.DISTANCE]: ROUTES.MONEY_REQUEST_DISTANCE.route, [SCREENS.IOU_SEND.ENABLE_PAYMENTS]: ROUTES.IOU_SEND_ENABLE_PAYMENTS, diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 3c4cf17853f15..c3d5bb77234f2 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -241,7 +241,8 @@ type MoneyRequestNavigatorParamList = { reportID: string; backTo: string; }; - [SCREENS.MONEY_REQUEST.MERCHANT]: { + [SCREENS.MONEY_REQUEST.STEP_MERCHANT]: { + action: string; iouType: string; reportID: string; field: string; diff --git a/src/pages/EditRequestMerchantPage.js b/src/pages/EditRequestMerchantPage.js deleted file mode 100644 index e5966bad2d2b9..0000000000000 --- a/src/pages/EditRequestMerchantPage.js +++ /dev/null @@ -1,79 +0,0 @@ -import PropTypes from 'prop-types'; -import React, {useCallback, useRef} from 'react'; -import {View} from 'react-native'; -import _ from 'underscore'; -import FormProvider from '@components/Form/FormProvider'; -import InputWrapper from '@components/Form/InputWrapper'; -import HeaderWithBackButton from '@components/HeaderWithBackButton'; -import ScreenWrapper from '@components/ScreenWrapper'; -import TextInput from '@components/TextInput'; -import useLocalize from '@hooks/useLocalize'; -import useThemeStyles from '@hooks/useThemeStyles'; -import CONST from '@src/CONST'; -import ONYXKEYS from '@src/ONYXKEYS'; - -const propTypes = { - /** Transaction default merchant value */ - defaultMerchant: PropTypes.string.isRequired, - - /** Callback to fire when the Save button is pressed */ - onSubmit: PropTypes.func.isRequired, - - /** Boolean to enable validation */ - isPolicyExpenseChat: PropTypes.bool.isRequired, -}; - -function EditRequestMerchantPage({defaultMerchant, onSubmit, isPolicyExpenseChat}) { - const styles = useThemeStyles(); - const {translate} = useLocalize(); - const merchantInputRef = useRef(null); - const isEmptyMerchant = defaultMerchant === '' || defaultMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT; - - const validate = useCallback( - (value) => { - const errors = {}; - if (_.isEmpty(value.merchant) && value.merchant.trim() === '' && isPolicyExpenseChat) { - errors.merchant = 'common.error.fieldRequired'; - } - return errors; - }, - [isPolicyExpenseChat], - ); - - return ( - merchantInputRef.current && merchantInputRef.current.focus()} - testID={EditRequestMerchantPage.displayName} - > - - - - (merchantInputRef.current = e)} - /> - - - - ); -} - -EditRequestMerchantPage.propTypes = propTypes; -EditRequestMerchantPage.displayName = 'EditRequestMerchantPage'; - -export default EditRequestMerchantPage; diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js index 3eb9d88f1120f..c49729df03207 100644 --- a/src/pages/EditRequestPage.js +++ b/src/pages/EditRequestPage.js @@ -24,7 +24,6 @@ import EditRequestCategoryPage from './EditRequestCategoryPage'; import EditRequestCreatedPage from './EditRequestCreatedPage'; import EditRequestDescriptionPage from './EditRequestDescriptionPage'; import EditRequestDistancePage from './EditRequestDistancePage'; -import EditRequestMerchantPage from './EditRequestMerchantPage'; import EditRequestReceiptPage from './EditRequestReceiptPage'; import EditRequestTagPage from './EditRequestTagPage'; import reportActionPropTypes from './home/report/reportActionPropTypes'; @@ -75,7 +74,6 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep amount: transactionAmount, currency: transactionCurrency, comment: transactionDescription, - merchant: transactionMerchant, category: transactionCategory, tag: transactionTag, } = ReportUtils.getTransactionDetails(transaction); @@ -139,23 +137,23 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep [transaction, report], ); - const saveMerchant = useCallback( - ({merchant: newMerchant}) => { - const newTrimmedMerchant = newMerchant.trim(); + // 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; - } + // // 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; + // } - // An empty newTrimmedMerchant is only possible for the P2P IOU case - IOU.updateMoneyRequestMerchant(transaction.transactionID, report.reportID, newTrimmedMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT); - Navigation.dismissModal(); - }, - [transactionMerchant, transaction, report], - ); + // // An empty newTrimmedMerchant is only possible for the P2P IOU case + // IOU.updateMoneyRequestMerchant(transaction.transactionID, report.reportID, newTrimmedMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT); + // Navigation.dismissModal(); + // }, + // [transactionMerchant, transaction, report], + // ); const saveTag = useCallback( ({tag: newTag}) => { @@ -224,16 +222,6 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep ); } - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.MERCHANT) { - return ( - - ); - } - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.CATEGORY && shouldShowCategories) { return ( { - setDraftSplitTransaction({merchant: transactionChanges.merchant.trim()}); - }} - /> - ); - } + // if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.MERCHANT) { + // return ( + // { + // setDraftSplitTransaction({merchant: transactionChanges.merchant.trim()}); + // }} + // /> + // ); + // } if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.CATEGORY) { return ( diff --git a/src/pages/iou/MoneyRequestMerchantPage.js b/src/pages/iou/MoneyRequestMerchantPage.js deleted file mode 100644 index ce96a09446b9f..0000000000000 --- a/src/pages/iou/MoneyRequestMerchantPage.js +++ /dev/null @@ -1,139 +0,0 @@ -import lodashGet from 'lodash/get'; -import PropTypes from 'prop-types'; -import React, {useCallback, useEffect} from 'react'; -import {View} from 'react-native'; -import {withOnyx} from 'react-native-onyx'; -import _ from 'underscore'; -import FormProvider from '@components/Form/FormProvider'; -import InputWrapperWithRef from '@components/Form/InputWrapper'; -import HeaderWithBackButton from '@components/HeaderWithBackButton'; -import ScreenWrapper from '@components/ScreenWrapper'; -import TextInput from '@components/TextInput'; -import useAutoFocusInput from '@hooks/useAutoFocusInput'; -import useLocalize from '@hooks/useLocalize'; -import useThemeStyles from '@hooks/useThemeStyles'; -import Navigation from '@libs/Navigation/Navigation'; -import * as IOU from '@userActions/IOU'; -import CONST from '@src/CONST'; -import ONYXKEYS from '@src/ONYXKEYS'; -import ROUTES from '@src/ROUTES'; -import {iouDefaultProps, iouPropTypes} from './propTypes'; - -const propTypes = { - /** Onyx Props */ - /** Holds data related to Money Request view state, rather than the underlying Money Request data. */ - iou: iouPropTypes, - - /** Route from navigation */ - route: PropTypes.shape({ - /** Params from the route */ - params: PropTypes.shape({ - /** The type of IOU report, i.e. bill, request, send */ - iouType: PropTypes.string, - - /** The report ID of the IOU */ - reportID: PropTypes.string, - - /** Which field we are editing */ - field: PropTypes.string, - - /** reportID for the "transaction thread" */ - threadReportID: PropTypes.string, - }), - }).isRequired, -}; - -const defaultProps = { - iou: iouDefaultProps, -}; - -function MoneyRequestMerchantPage({iou, route}) { - const styles = useThemeStyles(); - const {translate} = useLocalize(); - const {inputCallbackRef} = useAutoFocusInput(); - const iouType = lodashGet(route, 'params.iouType', ''); - const reportID = lodashGet(route, 'params.reportID', ''); - const isEmptyMerchant = iou.merchant === '' || iou.merchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT; - - useEffect(() => { - const moneyRequestId = `${iouType}${reportID}`; - const shouldReset = iou.id !== moneyRequestId; - if (shouldReset) { - IOU.resetMoneyRequestInfo(moneyRequestId); - } - - if (_.isEmpty(iou.participants) || (iou.amount === 0 && !iou.receiptPath) || shouldReset) { - Navigation.goBack(ROUTES.MONEY_REQUEST.getRoute(iouType, reportID), true); - } - }, [iou.id, iou.participants, iou.amount, iou.receiptPath, iouType, reportID]); - - function navigateBack() { - Navigation.goBack(ROUTES.MONEY_REQUEST_CONFIRMATION.getRoute(iouType, reportID)); - } - - const validate = useCallback((value) => { - const errors = {}; - - if (_.isEmpty(value.moneyRequestMerchant)) { - errors.moneyRequestMerchant = 'common.error.fieldRequired'; - } - - return errors; - }, []); - - /** - * Sets the money request comment by saving it to Onyx. - * - * @param {Object} value - * @param {String} value.moneyRequestMerchant - */ - function updateMerchant(value) { - IOU.setMoneyRequestMerchant(value.moneyRequestMerchant); - navigateBack(); - } - - return ( - - navigateBack()} - /> - updateMerchant(value)} - validate={validate} - submitButtonText={translate('common.save')} - enabledWhenOffline - > - - - - - - ); -} - -MoneyRequestMerchantPage.propTypes = propTypes; -MoneyRequestMerchantPage.defaultProps = defaultProps; -MoneyRequestMerchantPage.displayName = 'MoneyRequestMerchantPage'; - -export default withOnyx({ - iou: { - key: ONYXKEYS.IOU, - }, -})(MoneyRequestMerchantPage); From 731235ed390d411cc2071d18bc5f1cf9742a0908 Mon Sep 17 00:00:00 2001 From: Dylan Date: Fri, 2 Feb 2024 16:42:47 +0700 Subject: [PATCH 02/24] remove old merchant page --- ...oraryForRefactorRequestConfirmationList.js | 14 +++++++++-- .../ReportActionItem/MoneyRequestView.js | 20 ++++++++-------- src/libs/actions/IOU.js | 13 +++-------- src/pages/EditRequestPage.js | 18 --------------- src/pages/EditSplitBillPage.js | 11 --------- .../request/step/IOURequestStepMerchant.js | 23 +++++++++++++++++-- 6 files changed, 47 insertions(+), 52 deletions(-) diff --git a/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js b/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js index 0b8cf910923f6..7270756ccefa0 100755 --- a/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js +++ b/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js @@ -711,7 +711,9 @@ function MoneyTemporaryForRefactorRequestConfirmationList({ style={[styles.moneyRequestMenuItem]} titleStyle={styles.flex1} onPress={() => { - Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(CONST.IOU.ACTION.CREATE, iouType, transaction.transactionID, reportID, Navigation.getActiveRouteWithoutParams())); + Navigation.navigate( + ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(CONST.IOU.ACTION.CREATE, iouType, transaction.transactionID, reportID, Navigation.getActiveRouteWithoutParams()), + ); }} disabled={didConfirm} interactive={!isReadOnly} @@ -762,7 +764,15 @@ function MoneyTemporaryForRefactorRequestConfirmationList({ Navigation.navigate(ROUTES.EDIT_SPLIT_BILL.getRoute(reportID, reportActionID, CONST.EDIT_REQUEST_FIELD.MERCHANT)); return; } - Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(CONST.IOU.ACTION.CREATE, iouType, transaction.transactionID, reportID, Navigation.getActiveRouteWithoutParams())); + Navigation.navigate( + ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute( + CONST.IOU.ACTION.CREATE, + iouType, + transaction.transactionID, + reportID, + Navigation.getActiveRouteWithoutParams(), + ), + ); }} disabled={didConfirm} interactive={!isReadOnly} diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 794ae6383e583..38af392a5ea3c 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -320,15 +320,17 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate interactive={canEditMerchant} shouldShowRightIcon={canEditMerchant} titleStyle={styles.flex1} - onPress={() => Navigation.navigate( - ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute( - CONST.IOU.ACTION.EDIT, - CONST.IOU.TYPE.REQUEST, - transaction.transactionID, - report.reportID, - Navigation.getActiveRouteWithoutParams(), - ), - )} + onPress={() => + Navigation.navigate( + ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute( + CONST.IOU.ACTION.EDIT, + CONST.IOU.TYPE.REQUEST, + transaction.transactionID, + report.reportID, + Navigation.getActiveRouteWithoutParams(), + ), + ) + } brickRoadIndicator={hasViolations('merchant') || (hasErrors && isEmptyMerchant && isPolicyExpenseChat) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isPolicyExpenseChat && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index f2bdb097497e3..eed4259319e78 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -210,9 +210,10 @@ function setMoneyRequestDescription_temporaryForRefactor(transactionID, comment) /** * @param {String} transactionID * @param {String} merchant + * @param {Boolean} isDraft */ -function setMoneyRequestMerchant_temporaryForRefactor(transactionID, merchant) { - Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {merchant: merchant.trim()}); +function setMoneyRequestMerchant(transactionID, merchant, isDraft) { + Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {merchant}); } /** @@ -3617,13 +3618,6 @@ function setMoneyRequestDescription(comment) { Onyx.merge(ONYXKEYS.IOU, {comment: comment.trim()}); } -/** - * @param {String} merchant - */ -function setMoneyRequestMerchant(merchant) { - Onyx.merge(ONYXKEYS.IOU, {merchant: merchant.trim()}); -} - /** * @param {String} category */ @@ -3813,7 +3807,6 @@ export { setMoneyRequestCreated_temporaryForRefactor, setMoneyRequestCurrency_temporaryForRefactor, setMoneyRequestDescription_temporaryForRefactor, - setMoneyRequestMerchant_temporaryForRefactor, setMoneyRequestParticipants_temporaryForRefactor, setMoneyRequestReceipt, setMoneyRequestTag_temporaryForRefactor, diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js index c49729df03207..e0778c4555b79 100644 --- a/src/pages/EditRequestPage.js +++ b/src/pages/EditRequestPage.js @@ -137,24 +137,6 @@ 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; - // } - - // // An empty newTrimmedMerchant is only possible for the P2P IOU case - // IOU.updateMoneyRequestMerchant(transaction.transactionID, report.reportID, newTrimmedMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT); - // Navigation.dismissModal(); - // }, - // [transactionMerchant, transaction, report], - // ); - const saveTag = useCallback( ({tag: newTag}) => { let updatedTag = newTag; diff --git a/src/pages/EditSplitBillPage.js b/src/pages/EditSplitBillPage.js index eb5164ce92403..283abe6f279a0 100644 --- a/src/pages/EditSplitBillPage.js +++ b/src/pages/EditSplitBillPage.js @@ -119,17 +119,6 @@ function EditSplitBillPage({route, transaction, draftTransaction, report}) { ); } - // if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.MERCHANT) { - // return ( - // { - // setDraftSplitTransaction({merchant: transactionChanges.merchant.trim()}); - // }} - // /> - // ); - // } - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.CATEGORY) { return ( { - IOU.setMoneyRequestMerchant_temporaryForRefactor(transactionID, value.moneyRequestMerchant); + const newMerchant = value.moneyRequestMerchant.trim(); + // In the split flow, when editing we use SPLIT_TRANSACTION_DRAFT to save draft value + if (iouType === CONST.IOU.TYPE.SPLIT && action === CONST.IOU.ACTION.EDIT) { + IOU.setDraftSplitTransaction(transactionID, {merchant: newMerchant}); + navigateBack(); + return; + } + + // 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 (newMerchant === merchant || (newMerchant === '' && merchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT)) { + navigateBack(); + return; + } + + IOU.setMoneyRequestMerchant(transactionID, newMerchant, action === CONST.IOU.ACTION.CREATE); + + if (action === CONST.IOU.ACTION.EDIT) { + IOU.updateMoneyRequestMerchant(transactionID, reportID, newMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT); + } navigateBack(); }; From 4a4e8540e62876f1fdc528f7dae14cdc8cf65c95 Mon Sep 17 00:00:00 2001 From: Dylan Date: Fri, 2 Feb 2024 16:48:58 +0700 Subject: [PATCH 03/24] rename function --- src/components/MoneyRequestConfirmationList.js | 2 +- .../MoneyTemporaryForRefactorRequestConfirmationList.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.js b/src/components/MoneyRequestConfirmationList.js index 034cb6f8c1d38..77f9b63a6264b 100755 --- a/src/components/MoneyRequestConfirmationList.js +++ b/src/components/MoneyRequestConfirmationList.js @@ -427,7 +427,7 @@ function MoneyRequestConfirmationList(props) { return; } const distanceMerchant = DistanceRequestUtils.getDistanceMerchant(hasRoute, distance, unit, rate, currency, translate, toLocaleDigit); - IOU.setMoneyRequestMerchant_temporaryForRefactor(props.transactionID, distanceMerchant); + IOU.setMoneyRequestMerchant(props.transactionID, distanceMerchant, false); }, [hasRoute, distance, unit, rate, currency, translate, toLocaleDigit, props.isDistanceRequest, props.transactionID]); /** diff --git a/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js b/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js index 7270756ccefa0..1c15f315f16f1 100755 --- a/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js +++ b/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js @@ -474,7 +474,7 @@ function MoneyTemporaryForRefactorRequestConfirmationList({ return; } const distanceMerchant = DistanceRequestUtils.getDistanceMerchant(hasRoute, distance, unit, rate, currency, translate, toLocaleDigit); - IOU.setMoneyRequestMerchant_temporaryForRefactor(transaction.transactionID, distanceMerchant); + IOU.setMoneyRequestMerchant(transaction.transactionID, distanceMerchant, true); }, [hasRoute, distance, unit, rate, currency, translate, toLocaleDigit, isDistanceRequest, transaction]); /** From 690554bf428fc624d922ff443df74398e6f9ed5c Mon Sep 17 00:00:00 2001 From: Dylan Date: Fri, 2 Feb 2024 16:52:02 +0700 Subject: [PATCH 04/24] remove redundant --- src/SCREENS.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 96b284dbea2f2..4e3ea0eb5c563 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -153,7 +153,6 @@ const SCREENS = { DESCRIPTION: 'Money_Request_Description', CATEGORY: 'Money_Request_Category', TAG: 'Money_Request_Tag', - MERCHANT: 'Money_Request_Merchant', WAYPOINT: 'Money_Request_Waypoint', EDIT_WAYPOINT: 'Money_Request_Edit_Waypoint', DISTANCE: 'Money_Request_Distance', From 0e20d75d5fae752d140f0c21eaa8cafa0f61dcab Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 5 Feb 2024 22:26:41 +0700 Subject: [PATCH 05/24] dry code --- src/pages/iou/request/step/IOURequestStepMerchant.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index b45d4fb8ed81e..7b369d9337d4e 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -49,6 +49,8 @@ function IOURequestStepMerchant({ Navigation.goBack(backTo || ROUTES.HOME); }; + const isEditing = action === CONST.IOU.ACTION.EDIT; + /** * @param {Object} value * @param {String} value.moneyRequestMerchant @@ -73,7 +75,7 @@ function IOURequestStepMerchant({ const updateMerchant = (value) => { const newMerchant = value.moneyRequestMerchant.trim(); // In the split flow, when editing we use SPLIT_TRANSACTION_DRAFT to save draft value - if (iouType === CONST.IOU.TYPE.SPLIT && action === CONST.IOU.ACTION.EDIT) { + if (iouType === CONST.IOU.TYPE.SPLIT && isEditing) { IOU.setDraftSplitTransaction(transactionID, {merchant: newMerchant}); navigateBack(); return; @@ -86,9 +88,9 @@ function IOURequestStepMerchant({ return; } - IOU.setMoneyRequestMerchant(transactionID, newMerchant, action === CONST.IOU.ACTION.CREATE); + IOU.setMoneyRequestMerchant(transactionID, newMerchant, !isEditing); - if (action === CONST.IOU.ACTION.EDIT) { + if (isEditing) { IOU.updateMoneyRequestMerchant(transactionID, reportID, newMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT); } navigateBack(); From 992a3cab9bc52007d04ae278f2895c8000ea1bac Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 5 Feb 2024 22:36:58 +0700 Subject: [PATCH 06/24] fix TS --- src/components/ReportActionItem/MoneyRequestView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 68406f08338c3..d2500960b4180 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -299,7 +299,7 @@ function MoneyRequestView({ ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute( CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, - transaction?.transactionID, + transaction?.transactionID ?? '', report.reportID, Navigation.getActiveRouteWithoutParams(), ), From 4504a503eb4a499dd7c7926261a8684ff7d4b73e Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 5 Feb 2024 22:47:28 +0700 Subject: [PATCH 07/24] fix types --- src/libs/Navigation/types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 4b3f09ee0ebdd..1f8fba8b3e7fa 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -245,8 +245,8 @@ type MoneyRequestNavigatorParamList = { backTo: string; }; [SCREENS.MONEY_REQUEST.STEP_MERCHANT]: { - action: string; - iouType: string; + action: ValueOf; + iouType: ValueOf; reportID: string; field: string; threadReportID: string; From 12c9f480c0ea407f220dbfb72858c31cee21cb15 Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 5 Feb 2024 23:45:27 +0700 Subject: [PATCH 08/24] move copy to new file --- src/pages/iou/request/step/IOURequestStepMerchant.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index 7b369d9337d4e..f943514978c3b 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -120,7 +120,7 @@ function IOURequestStepMerchant({ maxLength={CONST.MERCHANT_NAME_MAX_LENGTH} label={translate('common.merchant')} accessibilityLabel={translate('common.merchant')} - role={CONST.ACCESSIBILITY_ROLE.TEXT} + role={CONST.ROLE.PRESENTATION} ref={inputCallbackRef} /> From c496c448534372244c4c7ff2d16479d08f354b03 Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 6 Feb 2024 17:45:48 +0700 Subject: [PATCH 09/24] merge main --- src/libs/actions/IOU.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 10e13f489b6b4..03cbd255261ed 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3561,7 +3561,7 @@ function setMoneyRequestDescription(comment: string) { /** * @param {String} category */ -function setMoneyRequestCategory(category) { +function setMoneyRequestCategory(category: string) { Onyx.merge(ONYXKEYS.IOU, {category}); } From 6ddb061da03fcfc7e76612d926e6f343762b397a Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 6 Feb 2024 17:47:18 +0700 Subject: [PATCH 10/24] update type --- src/libs/Navigation/types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 04f55fa2b2339..e018117ff6a4d 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -247,9 +247,9 @@ type MoneyRequestNavigatorParamList = { [SCREENS.MONEY_REQUEST.STEP_MERCHANT]: { action: ValueOf; iouType: ValueOf; + transactionID: string; reportID: string; - field: string; - threadReportID: string; + backTo: string; }; [SCREENS.IOU_SEND.ENABLE_PAYMENTS]: undefined; [SCREENS.IOU_SEND.ADD_BANK_ACCOUNT]: undefined; From 16686ca60455c37569449e02e2a6efbd6e805d3b Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 6 Feb 2024 17:48:09 +0700 Subject: [PATCH 11/24] merge main --- src/libs/actions/IOU.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 03cbd255261ed..b8d1c96ed0ec8 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -3558,9 +3558,6 @@ function setMoneyRequestDescription(comment: string) { Onyx.merge(ONYXKEYS.IOU, {comment: comment.trim()}); } -/** - * @param {String} category - */ function setMoneyRequestCategory(category: string) { Onyx.merge(ONYXKEYS.IOU, {category}); } From f508fc6ee8b881c1721bcba07b466527e8701bf9 Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 6 Feb 2024 17:52:47 +0700 Subject: [PATCH 12/24] migrate to ts --- src/libs/actions/IOU.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index b8d1c96ed0ec8..20515cacde088 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -291,12 +291,7 @@ function setMoneyRequestDescription_temporaryForRefactor(transactionID: string, Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {comment: {comment: comment.trim()}}); } -/** - * @param {String} transactionID - * @param {String} merchant - * @param {Boolean} isDraft - */ -function setMoneyRequestMerchant(transactionID, merchant, isDraft) { +function setMoneyRequestMerchant(transactionID: string, merchant: string, isDraft: boolean) { Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {merchant}); } From d8e915dbd2a274fbb00d81dcbb7450a885f34130 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 7 Feb 2024 00:00:20 +0700 Subject: [PATCH 13/24] get new merchant --- .../request/step/IOURequestStepMerchant.js | 45 ++++++++++++++++--- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index f943514978c3b..94eb1d58ab870 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -1,5 +1,8 @@ +import lodashGet from 'lodash/get'; +import lodashIsEmpty from 'lodash/isEmpty'; import React, {useCallback} from 'react'; import {View} from 'react-native'; +import {withOnyx} from 'react-native-onyx'; import _ from 'underscore'; import FormProvider from '@components/Form/FormProvider'; import InputWrapper from '@components/Form/InputWrapper'; @@ -10,6 +13,7 @@ import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import compose from '@libs/compose'; import Navigation from '@libs/Navigation/Navigation'; +import * as ReportUtils from '@libs/ReportUtils'; import * as IOU from '@userActions/IOU'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -26,24 +30,40 @@ const propTypes = { /** Onyx Props */ /** Holds data related to Money Request view state, rather than the underlying Money Request data. */ transaction: transactionPropTypes, + + /** The draft transaction that holds data to be persisted on the current transaction */ + splitDraftTransaction: transactionPropTypes, }; const defaultProps = { transaction: {}, + splitDraftTransaction: {}, }; function IOURequestStepMerchant({ route: { params: {transactionID, reportID, backTo, action, iouType}, }, - transaction: {merchant, participants}, + transaction, + splitDraftTransaction, }) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {inputCallbackRef} = useAutoFocusInput(); - const isEmptyMerchant = merchant === '' || merchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT; + const {merchant} = ReportUtils.getTransactionDetails(transaction); + + // In the split flow, when editing we use SPLIT_TRANSACTION_DRAFT to save draft value + const isEditingSplitBill = iouType === CONST.IOU.TYPE.SPLIT && action === CONST.IOU.ACTION.EDIT; + let currentMerchant = merchant; + + if (isEditingSplitBill && !lodashIsEmpty(splitDraftTransaction)) { + const {merchant: splitBillMerchant} = ReportUtils.getTransactionDetails(splitDraftTransaction); - const isMerchantRequired = _.some(participants, (participant) => Boolean(participant.isPolicyExpenseChat)); + currentMerchant = splitBillMerchant; + } + const isEmptyMerchant = currentMerchant === '' || currentMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT; + + const isMerchantRequired = _.some(transaction.participants, (participant) => Boolean(participant.isPolicyExpenseChat)); const navigateBack = () => { Navigation.goBack(backTo || ROUTES.HOME); @@ -75,7 +95,7 @@ function IOURequestStepMerchant({ const updateMerchant = (value) => { const newMerchant = value.moneyRequestMerchant.trim(); // In the split flow, when editing we use SPLIT_TRANSACTION_DRAFT to save draft value - if (iouType === CONST.IOU.TYPE.SPLIT && isEditing) { + if (isEditingSplitBill) { IOU.setDraftSplitTransaction(transactionID, {merchant: newMerchant}); navigateBack(); return; @@ -83,7 +103,7 @@ function IOURequestStepMerchant({ // 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 (newMerchant === merchant || (newMerchant === '' && merchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT)) { + if (newMerchant === currentMerchant || (newMerchant === '' && currentMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT)) { navigateBack(); return; } @@ -116,7 +136,7 @@ function IOURequestStepMerchant({ InputComponent={TextInput} inputID="moneyRequestMerchant" name="moneyRequestMerchant" - defaultValue={isEmptyMerchant ? '' : merchant} + defaultValue={isEmptyMerchant ? '' : currentMerchant} maxLength={CONST.MERCHANT_NAME_MAX_LENGTH} label={translate('common.merchant')} accessibilityLabel={translate('common.merchant')} @@ -133,4 +153,15 @@ IOURequestStepMerchant.propTypes = propTypes; IOURequestStepMerchant.defaultProps = defaultProps; IOURequestStepMerchant.displayName = 'IOURequestStepMerchant'; -export default compose(withWritableReportOrNotFound, withFullTransactionOrNotFound)(IOURequestStepMerchant); +export default compose( + withWritableReportOrNotFound, + withFullTransactionOrNotFound, + withOnyx({ + splitDraftTransaction: { + key: ({route}) => { + const transactionID = lodashGet(route, 'params.transactionID', 0); + return `${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${transactionID}`; + }, + }, + }), +)(IOURequestStepMerchant); From 22f9231ec57c181ec804c290249fbaa44630fc8a Mon Sep 17 00:00:00 2001 From: Dylan Date: Thu, 8 Feb 2024 14:15:40 +0700 Subject: [PATCH 14/24] lint fix --- src/pages/EditRequestPage.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js index bd2ac5bac958e..53cca3f840c48 100644 --- a/src/pages/EditRequestPage.js +++ b/src/pages/EditRequestPage.js @@ -69,12 +69,7 @@ const defaultProps = { function EditRequestPage({report, route, policyCategories, policyTags, parentReportActions, transaction}) { const parentReportActionID = lodashGet(report, 'parentReportActionID', '0'); const parentReportAction = lodashGet(parentReportActions, parentReportActionID, {}); - const { - amount: transactionAmount, - currency: transactionCurrency, - category: transactionCategory, - tag: transactionTag, - } = ReportUtils.getTransactionDetails(transaction); + const {amount: transactionAmount, currency: transactionCurrency, category: transactionCategory, tag: transactionTag} = ReportUtils.getTransactionDetails(transaction); const defaultCurrency = lodashGet(route, 'params.currency', '') || transactionCurrency; const fieldToEdit = lodashGet(route, ['params', 'field'], ''); From 5a2e86b5e1feb2c8d07ea84d54327cd487341323 Mon Sep 17 00:00:00 2001 From: Dylan Date: Thu, 8 Feb 2024 14:18:01 +0700 Subject: [PATCH 15/24] lint fix --- src/pages/EditSplitBillPage.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/pages/EditSplitBillPage.js b/src/pages/EditSplitBillPage.js index dbe351fabb9e9..0f1994470f46d 100644 --- a/src/pages/EditSplitBillPage.js +++ b/src/pages/EditSplitBillPage.js @@ -15,11 +15,6 @@ import ROUTES from '@src/ROUTES'; import EditRequestAmountPage from './EditRequestAmountPage'; import EditRequestCategoryPage from './EditRequestCategoryPage'; import EditRequestCreatedPage from './EditRequestCreatedPage'; -<<<<<<< HEAD -import EditRequestDescriptionPage from './EditRequestDescriptionPage'; -======= -import EditRequestMerchantPage from './EditRequestMerchantPage'; ->>>>>>> main import EditRequestTagPage from './EditRequestTagPage'; import reportPropTypes from './reportPropTypes'; From 206ef8a16aa72ce371199b9c99f86cbc1732592e Mon Sep 17 00:00:00 2001 From: Dylan Date: Fri, 9 Feb 2024 01:21:22 +0700 Subject: [PATCH 16/24] clean code --- .../iou/request/step/IOURequestStepMerchant.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index 94eb1d58ab870..4043803a18733 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -50,18 +50,13 @@ function IOURequestStepMerchant({ const styles = useThemeStyles(); const {translate} = useLocalize(); const {inputCallbackRef} = useAutoFocusInput(); - const {merchant} = ReportUtils.getTransactionDetails(transaction); // In the split flow, when editing we use SPLIT_TRANSACTION_DRAFT to save draft value const isEditingSplitBill = iouType === CONST.IOU.TYPE.SPLIT && action === CONST.IOU.ACTION.EDIT; - let currentMerchant = merchant; - if (isEditingSplitBill && !lodashIsEmpty(splitDraftTransaction)) { - const {merchant: splitBillMerchant} = ReportUtils.getTransactionDetails(splitDraftTransaction); + const {merchant} = ReportUtils.getTransactionDetails(isEditingSplitBill && !lodashIsEmpty(splitDraftTransaction) ? splitDraftTransaction : transaction); - currentMerchant = splitBillMerchant; - } - const isEmptyMerchant = currentMerchant === '' || currentMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT; + const isEmptyMerchant = merchant === '' || merchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT; const isMerchantRequired = _.some(transaction.participants, (participant) => Boolean(participant.isPolicyExpenseChat)); @@ -103,7 +98,7 @@ function IOURequestStepMerchant({ // 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 (newMerchant === currentMerchant || (newMerchant === '' && currentMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT)) { + if (newMerchant === merchant || (newMerchant === '' && merchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT)) { navigateBack(); return; } @@ -136,7 +131,7 @@ function IOURequestStepMerchant({ InputComponent={TextInput} inputID="moneyRequestMerchant" name="moneyRequestMerchant" - defaultValue={isEmptyMerchant ? '' : currentMerchant} + defaultValue={isEmptyMerchant ? '' : merchant} maxLength={CONST.MERCHANT_NAME_MAX_LENGTH} label={translate('common.merchant')} accessibilityLabel={translate('common.merchant')} From f026983788b1a0758055ec8694db0d81b7428d05 Mon Sep 17 00:00:00 2001 From: Dylan Date: Sat, 10 Feb 2024 09:33:13 +0700 Subject: [PATCH 17/24] fix remove empty line --- src/pages/iou/request/step/IOURequestStepMerchant.js | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index b92cc63c1012f..f753b46f3779e 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -68,22 +68,17 @@ function IOURequestStepMerchant({ const styles = useThemeStyles(); const {translate} = useLocalize(); const {inputCallbackRef} = useAutoFocusInput(); + const isEditing = action === CONST.IOU.ACTION.EDIT; // In the split flow, when editing we use SPLIT_TRANSACTION_DRAFT to save draft value - const isEditingSplitBill = iouType === CONST.IOU.TYPE.SPLIT && action === CONST.IOU.ACTION.EDIT; - + const isEditingSplitBill = iouType === CONST.IOU.TYPE.SPLIT && isEditing; const {merchant} = ReportUtils.getTransactionDetails(isEditingSplitBill && !lodashIsEmpty(splitDraftTransaction) ? splitDraftTransaction : transaction); - const isEmptyMerchant = merchant === '' || merchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT; - const isMerchantRequired = _.some(transaction.participants, (participant) => Boolean(participant.isPolicyExpenseChat)); - const navigateBack = () => { Navigation.goBack(backTo); }; - const isEditing = action === CONST.IOU.ACTION.EDIT; - /** * @param {Object} value * @param {String} value.moneyRequestMerchant @@ -120,9 +115,7 @@ function IOURequestStepMerchant({ navigateBack(); return; } - IOU.setMoneyRequestMerchant(transactionID, newMerchant, !isEditing); - if (isEditing) { IOU.updateMoneyRequestMerchant(transactionID, reportID, newMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT, policy, policyTags, policyCategories); } From 403356e8c008d4497d4f618ac37987d633705b9b Mon Sep 17 00:00:00 2001 From: Dylan Date: Sat, 10 Feb 2024 09:37:43 +0700 Subject: [PATCH 18/24] fix typo --- src/components/ReportActionItem/MoneyRequestView.tsx | 1 - src/pages/iou/request/step/IOURequestStepMerchant.js | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index cd94b71267c1b..6492e2f6d5966 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -303,7 +303,6 @@ function MoneyRequestView({ CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID, - Navigation.getActiveRouteWithoutParams(), ), ) } diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index f753b46f3779e..2dedb8e56ae1d 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -17,14 +17,14 @@ import * as ReportUtils from '@libs/ReportUtils'; import * as IOU from '@userActions/IOU'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; +import PropTypes from 'prop-types'; +import { policyPropTypes } from '@pages/workspace/withPolicy'; +import categoryPropTypes from '@components/categoryPropTypes'; +import tagPropTypes from '@components/tagPropTypes'; import IOURequestStepRoutePropTypes from './IOURequestStepRoutePropTypes'; import StepScreenWrapper from './StepScreenWrapper'; import withFullTransactionOrNotFound from './withFullTransactionOrNotFound'; import withWritableReportOrNotFound from './withWritableReportOrNotFound'; -import { policyPropTypes } from '@pages/workspace/withPolicy'; -import categoryPropTypes from '@components/categoryPropTypes'; -import tagPropTypes from '@components/tagPropTypes'; -import propTypes from '@components/menuItemPropTypes'; const propTypes = { /** Navigation route context info provided by react navigation */ @@ -41,7 +41,7 @@ const propTypes = { policy: policyPropTypes.policy, /** Collection of categories attached to a policy */ - policyCategories: propTypes.objectOf(categoryPropTypes), + policyCategories: PropTypes.objectOf(categoryPropTypes), /** Collection of tags attached to a policy */ policyTags: tagPropTypes, From 13d5d311c3fd31aa1446d8b27cc6839d76d23a95 Mon Sep 17 00:00:00 2001 From: Dylan Date: Sat, 10 Feb 2024 12:45:35 +0700 Subject: [PATCH 19/24] lint fix --- src/components/ReportActionItem/MoneyRequestView.tsx | 7 +------ src/pages/iou/request/step/IOURequestStepMerchant.js | 8 ++++---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 6492e2f6d5966..b3686a5f0bf42 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -298,12 +298,7 @@ function MoneyRequestView({ titleStyle={styles.flex1} onPress={() => Navigation.navigate( - ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute( - CONST.IOU.ACTION.EDIT, - CONST.IOU.TYPE.REQUEST, - transaction?.transactionID ?? '', - report.reportID, - ), + ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID), ) } brickRoadIndicator={ diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index 2dedb8e56ae1d..d038bd9dc0c23 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -1,11 +1,14 @@ import lodashGet from 'lodash/get'; import lodashIsEmpty from 'lodash/isEmpty'; +import PropTypes from 'prop-types'; import React, {useCallback} from 'react'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import _ from 'underscore'; +import categoryPropTypes from '@components/categoryPropTypes'; import FormProvider from '@components/Form/FormProvider'; import InputWrapper from '@components/Form/InputWrapper'; +import tagPropTypes from '@components/tagPropTypes'; import TextInput from '@components/TextInput'; import transactionPropTypes from '@components/transactionPropTypes'; import useAutoFocusInput from '@hooks/useAutoFocusInput'; @@ -14,13 +17,10 @@ import useThemeStyles from '@hooks/useThemeStyles'; import compose from '@libs/compose'; import Navigation from '@libs/Navigation/Navigation'; import * as ReportUtils from '@libs/ReportUtils'; +import {policyPropTypes} from '@pages/workspace/withPolicy'; import * as IOU from '@userActions/IOU'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import PropTypes from 'prop-types'; -import { policyPropTypes } from '@pages/workspace/withPolicy'; -import categoryPropTypes from '@components/categoryPropTypes'; -import tagPropTypes from '@components/tagPropTypes'; import IOURequestStepRoutePropTypes from './IOURequestStepRoutePropTypes'; import StepScreenWrapper from './StepScreenWrapper'; import withFullTransactionOrNotFound from './withFullTransactionOrNotFound'; From ce89de52fafafc6d86f7f7b808fcccacfc1cbef9 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 14 Feb 2024 02:28:10 +0700 Subject: [PATCH 20/24] add comment --- src/pages/iou/request/step/IOURequestStepMerchant.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index d038bd9dc0c23..3e16ea02805a5 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -117,6 +117,7 @@ function IOURequestStepMerchant({ } IOU.setMoneyRequestMerchant(transactionID, newMerchant, !isEditing); if (isEditing) { + // When creating new money requests newMerchant can be blank so we fall back on PARTIAL_TRANSACTION_MERCHANT IOU.updateMoneyRequestMerchant(transactionID, reportID, newMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT, policy, policyTags, policyCategories); } navigateBack(); From 594d1cb0e220d35b11aff882bb36d51c132a6105 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 14 Feb 2024 02:38:41 +0700 Subject: [PATCH 21/24] add type --- src/components/transactionPropTypes.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/components/transactionPropTypes.js b/src/components/transactionPropTypes.js index bdcf60bec5da2..7eb1b776358c2 100644 --- a/src/components/transactionPropTypes.js +++ b/src/components/transactionPropTypes.js @@ -67,6 +67,17 @@ export default PropTypes.shape({ }), ), + /** Selected participants */ + participants: PropTypes.arrayOf( + PropTypes.shape({ + accountID: PropTypes.number, + login: PropTypes.string, + isPolicyExpenseChat: PropTypes.bool, + isOwnPolicyExpenseChat: PropTypes.bool, + selected: PropTypes.bool, + }), + ), + /** The original currency of the transaction */ currency: PropTypes.string, From 6e24b8441296454f3feb72d11dd40f91cb58ed72 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 14 Feb 2024 10:23:45 +0700 Subject: [PATCH 22/24] merge main --- src/pages/EditSplitBillPage.tsx | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/pages/EditSplitBillPage.tsx b/src/pages/EditSplitBillPage.tsx index c1385085cd512..8029a4f56f76d 100644 --- a/src/pages/EditSplitBillPage.tsx +++ b/src/pages/EditSplitBillPage.tsx @@ -80,20 +80,6 @@ function EditSplitBillPage({route, transaction, draftTransaction, report}: EditS ); } -<<<<<<< HEAD:src/pages/EditSplitBillPage.js -======= - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.MERCHANT) { - return ( - { - setDraftSplitTransaction({merchant: transactionChanges.merchant.trim()}); - }} - /> - ); - } - ->>>>>>> main:src/pages/EditSplitBillPage.tsx if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.CATEGORY) { return ( Date: Wed, 14 Feb 2024 16:39:21 +0700 Subject: [PATCH 23/24] add empty line --- src/pages/iou/request/step/IOURequestStepMerchant.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index fa037ec90eac8..e86edb8eed4ff 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -103,6 +103,7 @@ function IOURequestStepMerchant({ */ const updateMerchant = (value) => { const newMerchant = value.moneyRequestMerchant.trim(); + // In the split flow, when editing we use SPLIT_TRANSACTION_DRAFT to save draft value if (isEditingSplitBill) { IOU.setDraftSplitTransaction(transactionID, {merchant: newMerchant}); @@ -118,6 +119,7 @@ function IOURequestStepMerchant({ } IOU.setMoneyRequestMerchant(transactionID, newMerchant, !isEditing); if (isEditing) { + // When creating new money requests newMerchant can be blank so we fall back on PARTIAL_TRANSACTION_MERCHANT IOU.updateMoneyRequestMerchant(transactionID, reportID, newMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT, policy, policyTags, policyCategories); } From d55757ffe7dc7c8eb801fcc359d7ebb7e5cd338b Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 14 Feb 2024 22:17:30 +0700 Subject: [PATCH 24/24] fix lint --- src/pages/iou/request/step/IOURequestStepMerchant.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.js b/src/pages/iou/request/step/IOURequestStepMerchant.js index e86edb8eed4ff..914328ace125b 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.js +++ b/src/pages/iou/request/step/IOURequestStepMerchant.js @@ -119,7 +119,6 @@ function IOURequestStepMerchant({ } IOU.setMoneyRequestMerchant(transactionID, newMerchant, !isEditing); if (isEditing) { - // When creating new money requests newMerchant can be blank so we fall back on PARTIAL_TRANSACTION_MERCHANT IOU.updateMoneyRequestMerchant(transactionID, reportID, newMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT, policy, policyTags, policyCategories); }