diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index a07266738004..23b56d921c4d 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -551,8 +551,8 @@ const ONYXKEYS = { SETTINGS_STATUS_SET_CLEAR_AFTER_FORM_DRAFT: 'settingsStatusSetClearAfterFormDraft', SETTINGS_STATUS_CLEAR_DATE_FORM: 'settingsStatusClearDateForm', SETTINGS_STATUS_CLEAR_DATE_FORM_DRAFT: 'settingsStatusClearDateFormDraft', - CHANGE_BILLING_CURRENCY_FORM: 'changeBillingCurrencyForm', - CHANGE_BILLING_CURRENCY_FORM_DRAFT: 'changeBillingCurrencyFormDraft', + CHANGE_BILLING_CURRENCY_FORM: 'billingCurrencyForm', + CHANGE_BILLING_CURRENCY_FORM_DRAFT: 'billingCurrencyFormDraft', PRIVATE_NOTES_FORM: 'privateNotesForm', PRIVATE_NOTES_FORM_DRAFT: 'privateNotesFormDraft', I_KNOW_A_TEACHER_FORM: 'iKnowTeacherForm', diff --git a/src/pages/settings/Subscription/PaymentCard/ChangeBillingCurrency/index.tsx b/src/pages/settings/Subscription/PaymentCard/ChangeBillingCurrency/index.tsx index 96aad062f9f9..5cb4e10c735f 100644 --- a/src/pages/settings/Subscription/PaymentCard/ChangeBillingCurrency/index.tsx +++ b/src/pages/settings/Subscription/PaymentCard/ChangeBillingCurrency/index.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useMemo} from 'react'; +import React, {useCallback, useEffect, useMemo} from 'react'; import {View} from 'react-native'; import {useOnyx} from 'react-native-onyx'; import type {ValueOf} from 'type-fest'; @@ -7,6 +7,7 @@ import type {FormOnyxValues} from '@components/Form/types'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; import useLocalize from '@hooks/useLocalize'; +import usePrevious from '@hooks/usePrevious'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@navigation/Navigation'; import * as PaymentMethods from '@userActions/PaymentMethods'; @@ -19,11 +20,24 @@ function ChangeBillingCurrency() { const [fundList] = useOnyx(ONYXKEYS.FUND_LIST); const defaultCard = useMemo(() => Object.values(fundList ?? {}).find((card) => card.accountData?.additionalData?.isBillingCard), [fundList]); - const changeBillingCurrency = useCallback((currency?: ValueOf, values?: FormOnyxValues) => { - if (values?.securityCode) { - PaymentMethods.updateBillingCurrency(currency ?? CONST.PAYMENT_CARD_CURRENCY.USD, values.securityCode); + const [formData] = useOnyx(ONYXKEYS.FORMS.CHANGE_BILLING_CURRENCY_FORM); + const formDataComplete = formData?.isLoading === false && !formData.errors; + const prevIsLoading = usePrevious(formData?.isLoading); + const prevFormDataComplete = usePrevious(formDataComplete); + + useEffect(() => { + if (!formDataComplete || prevFormDataComplete || !prevIsLoading) { + return; } Navigation.goBack(); + }, [formDataComplete, prevFormDataComplete, prevIsLoading]); + + const changeBillingCurrency = useCallback((currency?: ValueOf, values?: FormOnyxValues) => { + if (!values?.securityCode) { + Navigation.goBack(); + return; + } + PaymentMethods.updateBillingCurrency(currency ?? CONST.PAYMENT_CARD_CURRENCY.USD, values.securityCode); }, []); return (