From bd05a4d2cb02838039190e8039de96b774afec8b Mon Sep 17 00:00:00 2001 From: s-alves10 Date: Mon, 11 Dec 2023 12:39:17 -0600 Subject: [PATCH 1/4] fix: store selected currency in URL query temporarily --- src/pages/iou/request/step/IOURequestStepAmount.js | 6 ++++-- src/pages/iou/request/step/IOURequestStepCurrency.js | 8 +++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pages/iou/request/step/IOURequestStepAmount.js b/src/pages/iou/request/step/IOURequestStepAmount.js index b2dd18c38803..07c8aba16346 100644 --- a/src/pages/iou/request/step/IOURequestStepAmount.js +++ b/src/pages/iou/request/step/IOURequestStepAmount.js @@ -36,15 +36,17 @@ const defaultProps = { function IOURequestStepAmount({ report, route: { - params: {iouType, reportID, transactionID, backTo}, + params: {iouType, reportID, transactionID, backTo, currency: selectedCurrency}, }, transaction, - transaction: {currency}, + transaction: {currency: originalCurrency}, }) { const {translate} = useLocalize(); const textInput = useRef(null); const focusTimeoutRef = useRef(null); const iouRequestType = getRequestType(transaction); + /* eslint-disable es/no-nullish-coalescing-operators */ + const currency = selectedCurrency ?? originalCurrency; useFocusEffect( useCallback(() => { diff --git a/src/pages/iou/request/step/IOURequestStepCurrency.js b/src/pages/iou/request/step/IOURequestStepCurrency.js index 06af0ecf3ca4..e6abeba2bab9 100644 --- a/src/pages/iou/request/step/IOURequestStepCurrency.js +++ b/src/pages/iou/request/step/IOURequestStepCurrency.js @@ -10,7 +10,6 @@ import useLocalize from '@hooks/useLocalize'; import compose from '@libs/compose'; import * as CurrencyUtils from '@libs/CurrencyUtils'; import Navigation from '@libs/Navigation/Navigation'; -import * as IOU from '@userActions/IOU'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES, {getUrlWithBackToParam} from '@src/ROUTES'; import IOURequestStepRoutePropTypes from './IOURequestStepRoutePropTypes'; @@ -59,14 +58,14 @@ function IOURequestStepCurrency({ const [searchValue, setSearchValue] = useState(''); const optionsSelectorRef = useRef(); - const navigateBack = () => { + const navigateBack = (selectedCurrency = undefined) => { // If the currency selection was done from the confirmation step (eg. + > request money > manual > confirm > amount > currency) // then the user needs taken back to the confirmation page instead of the initial amount page. This is because the route params // are only able to handle one backTo param at a time and the user needs to go back to the amount page before going back // to the confirmation page if (pageIndex === 'confirm') { const routeToAmountPageWithConfirmationAsBackTo = getUrlWithBackToParam(backTo, `/${ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(iouType, transactionID, reportID)}`); - Navigation.goBack(routeToAmountPageWithConfirmationAsBackTo); + Navigation.goBack(`${routeToAmountPageWithConfirmationAsBackTo}${selectedCurrency ? `¤cy=${selectedCurrency}` : ''}`); return; } Navigation.goBack(backTo || ROUTES.HOME); @@ -78,8 +77,7 @@ function IOURequestStepCurrency({ */ const confirmCurrencySelection = (option) => { Keyboard.dismiss(); - IOU.setMoneyRequestCurrency_temporaryForRefactor(transactionID, option.currencyCode); - navigateBack(); + navigateBack(option.currencyCode); }; const {sections, headerMessage, initiallyFocusedOptionKey} = useMemo(() => { From de583c8a8e03278ed86ad266b05a3ca9e4027ed2 Mon Sep 17 00:00:00 2001 From: s-alves10 Date: Mon, 11 Dec 2023 12:57:44 -0600 Subject: [PATCH 2/4] fix: navigate when selecting currency --- src/pages/iou/request/step/IOURequestStepCurrency.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pages/iou/request/step/IOURequestStepCurrency.js b/src/pages/iou/request/step/IOURequestStepCurrency.js index e6abeba2bab9..a0b308b62519 100644 --- a/src/pages/iou/request/step/IOURequestStepCurrency.js +++ b/src/pages/iou/request/step/IOURequestStepCurrency.js @@ -65,7 +65,11 @@ function IOURequestStepCurrency({ // to the confirmation page if (pageIndex === 'confirm') { const routeToAmountPageWithConfirmationAsBackTo = getUrlWithBackToParam(backTo, `/${ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(iouType, transactionID, reportID)}`); - Navigation.goBack(`${routeToAmountPageWithConfirmationAsBackTo}${selectedCurrency ? `¤cy=${selectedCurrency}` : ''}`); + if (selectedCurrency) { + Navigation.navigate(`${routeToAmountPageWithConfirmationAsBackTo}¤cy=${selectedCurrency}`); + } else { + Navigation.goBack(routeToAmountPageWithConfirmationAsBackTo); + } return; } Navigation.goBack(backTo || ROUTES.HOME); From e70f1e94832d7b7f3884bd77d4c7c17379c2f8b0 Mon Sep 17 00:00:00 2001 From: s-alves10 Date: Mon, 11 Dec 2023 15:10:37 -0600 Subject: [PATCH 3/4] fix: use || instead of ?? operator --- src/pages/iou/request/step/IOURequestStepAmount.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/iou/request/step/IOURequestStepAmount.js b/src/pages/iou/request/step/IOURequestStepAmount.js index 07c8aba16346..913912fcf05c 100644 --- a/src/pages/iou/request/step/IOURequestStepAmount.js +++ b/src/pages/iou/request/step/IOURequestStepAmount.js @@ -45,8 +45,7 @@ function IOURequestStepAmount({ const textInput = useRef(null); const focusTimeoutRef = useRef(null); const iouRequestType = getRequestType(transaction); - /* eslint-disable es/no-nullish-coalescing-operators */ - const currency = selectedCurrency ?? originalCurrency; + const currency = selectedCurrency || originalCurrency; useFocusEffect( useCallback(() => { From f32d7d8b84cf737fa323e0c2128496d1677bea1e Mon Sep 17 00:00:00 2001 From: s-alves10 Date: Mon, 11 Dec 2023 17:55:11 -0600 Subject: [PATCH 4/4] fix: don't store currency data only for confirm page --- src/pages/iou/request/step/IOURequestStepCurrency.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pages/iou/request/step/IOURequestStepCurrency.js b/src/pages/iou/request/step/IOURequestStepCurrency.js index a0b308b62519..b4281de4d16e 100644 --- a/src/pages/iou/request/step/IOURequestStepCurrency.js +++ b/src/pages/iou/request/step/IOURequestStepCurrency.js @@ -10,6 +10,7 @@ import useLocalize from '@hooks/useLocalize'; import compose from '@libs/compose'; import * as CurrencyUtils from '@libs/CurrencyUtils'; import Navigation from '@libs/Navigation/Navigation'; +import * as IOU from '@userActions/IOU'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES, {getUrlWithBackToParam} from '@src/ROUTES'; import IOURequestStepRoutePropTypes from './IOURequestStepRoutePropTypes'; @@ -81,6 +82,9 @@ function IOURequestStepCurrency({ */ const confirmCurrencySelection = (option) => { Keyboard.dismiss(); + if (pageIndex !== 'confirm') { + IOU.setMoneyRequestCurrency_temporaryForRefactor(transactionID, option.currencyCode); + } navigateBack(option.currencyCode); };