1
- import React , { useCallback , useMemo } from 'react' ;
1
+ import React , { useCallback , useEffect , useMemo } from 'react' ;
2
2
import { View } from 'react-native' ;
3
3
import { useOnyx } from 'react-native-onyx' ;
4
4
import type { ValueOf } from 'type-fest' ;
@@ -7,6 +7,7 @@ import type {FormOnyxValues} from '@components/Form/types';
7
7
import HeaderWithBackButton from '@components/HeaderWithBackButton' ;
8
8
import ScreenWrapper from '@components/ScreenWrapper' ;
9
9
import useLocalize from '@hooks/useLocalize' ;
10
+ import usePrevious from '@hooks/usePrevious' ;
10
11
import useThemeStyles from '@hooks/useThemeStyles' ;
11
12
import Navigation from '@navigation/Navigation' ;
12
13
import * as PaymentMethods from '@userActions/PaymentMethods' ;
@@ -19,11 +20,24 @@ function ChangeBillingCurrency() {
19
20
const [ fundList ] = useOnyx ( ONYXKEYS . FUND_LIST ) ;
20
21
const defaultCard = useMemo ( ( ) => Object . values ( fundList ?? { } ) . find ( ( card ) => card . accountData ?. additionalData ?. isBillingCard ) , [ fundList ] ) ;
21
22
22
- const changeBillingCurrency = useCallback ( ( currency ?: ValueOf < typeof CONST . PAYMENT_CARD_CURRENCY > , values ?: FormOnyxValues < typeof ONYXKEYS . FORMS . CHANGE_BILLING_CURRENCY_FORM > ) => {
23
- if ( values ?. securityCode ) {
24
- PaymentMethods . updateBillingCurrency ( currency ?? CONST . PAYMENT_CARD_CURRENCY . USD , values . securityCode ) ;
23
+ const [ formData ] = useOnyx ( ONYXKEYS . FORMS . CHANGE_BILLING_CURRENCY_FORM ) ;
24
+ const formDataComplete = formData ?. isLoading === false && ! formData . errors ;
25
+ const prevIsLoading = usePrevious ( formData ?. isLoading ) ;
26
+ const prevFormDataComplete = usePrevious ( formDataComplete ) ;
27
+
28
+ useEffect ( ( ) => {
29
+ if ( ! formDataComplete || prevFormDataComplete || ! prevIsLoading ) {
30
+ return ;
25
31
}
26
32
Navigation . goBack ( ) ;
33
+ } , [ formDataComplete , prevFormDataComplete , prevIsLoading ] ) ;
34
+
35
+ const changeBillingCurrency = useCallback ( ( currency ?: ValueOf < typeof CONST . PAYMENT_CARD_CURRENCY > , values ?: FormOnyxValues < typeof ONYXKEYS . FORMS . CHANGE_BILLING_CURRENCY_FORM > ) => {
36
+ if ( ! values ?. securityCode ) {
37
+ Navigation . goBack ( ) ;
38
+ return ;
39
+ }
40
+ PaymentMethods . updateBillingCurrency ( currency ?? CONST . PAYMENT_CARD_CURRENCY . USD , values . securityCode ) ;
27
41
} , [ ] ) ;
28
42
29
43
return (
0 commit comments