@@ -11,12 +11,12 @@ import useLocalize from '@hooks/useLocalize';
11
11
import usePrevious from '@hooks/usePrevious' ;
12
12
import useThemeStyles from '@hooks/useThemeStyles' ;
13
13
import { requestValidateCodeAction } from '@libs/actions/User' ;
14
- import * as ErrorUtils from '@libs/ErrorUtils' ;
14
+ import { getLatestErrorMessage , getLatestErrorMessageField } from '@libs/ErrorUtils' ;
15
15
import Navigation from '@libs/Navigation/Navigation' ;
16
16
import type { PlatformStackScreenProps } from '@libs/Navigation/PlatformStackNavigation/types' ;
17
17
import type { SettingsNavigatorParamList } from '@libs/Navigation/types' ;
18
18
import NotFoundPage from '@pages/ErrorPage/NotFoundPage' ;
19
- import * as Card from '@userActions/Card' ;
19
+ import { clearCardListErrors , reportVirtualExpensifyCardFraud } from '@userActions/Card' ;
20
20
import ONYXKEYS from '@src/ONYXKEYS' ;
21
21
import ROUTES from '@src/ROUTES' ;
22
22
import type SCREENS from '@src/SCREENS' ;
@@ -39,8 +39,10 @@ function ReportVirtualCardFraudPage({
39
39
const loginData = loginList ?. [ primaryLogin ] ;
40
40
41
41
const virtualCard = cardList ?. [ cardID ] ;
42
- const virtualCardError = ErrorUtils . getLatestErrorMessage ( virtualCard ) ;
43
- const validateError = ErrorUtils . getLatestErrorMessageField ( virtualCard ) ;
42
+ const latestIssuedVirtualCardID = Object . keys ( cardList ?? { } ) ?. pop ( ) ;
43
+ const virtualCardError = getLatestErrorMessage ( virtualCard ) ;
44
+ const validateError = getLatestErrorMessageField ( virtualCard ) ;
45
+ const prevVirtualCard = usePrevious ( virtualCard ) ;
44
46
45
47
const [ isValidateCodeActionModalVisible , setIsValidateCodeActionModalVisible ] = useState ( false ) ;
46
48
@@ -56,15 +58,18 @@ function ReportVirtualCardFraudPage({
56
58
return ;
57
59
}
58
60
59
- Navigation . navigate ( ROUTES . SETTINGS_WALLET_DOMAINCARD . getRoute ( cardID ) ) ;
60
- } , [ cardID , formData ?. isLoading , prevIsLoading , virtualCard ?. errors ] ) ;
61
+ if ( latestIssuedVirtualCardID ) {
62
+ Navigation . navigate ( ROUTES . SETTINGS_WALLET_DOMAINCARD . getRoute ( latestIssuedVirtualCardID ) ) ;
63
+ }
64
+ } , [ cardID , formData ?. isLoading , prevIsLoading , virtualCard ?. errors , latestIssuedVirtualCardID ] ) ;
61
65
62
66
const handleValidateCodeEntered = useCallback (
63
67
( validateCode : string ) => {
64
68
if ( ! virtualCard ) {
65
69
return ;
66
70
}
67
- Card . reportVirtualExpensifyCardFraud ( virtualCard , validateCode ) ;
71
+ reportVirtualExpensifyCardFraud ( virtualCard , validateCode ) ;
72
+ setIsValidateCodeActionModalVisible ( false ) ;
68
73
} ,
69
74
[ virtualCard ] ,
70
75
) ;
@@ -81,7 +86,7 @@ function ReportVirtualCardFraudPage({
81
86
setIsValidateCodeActionModalVisible ( true ) ;
82
87
} , [ setIsValidateCodeActionModalVisible ] ) ;
83
88
84
- if ( isEmptyObject ( virtualCard ) ) {
89
+ if ( isEmptyObject ( virtualCard ) && isEmptyObject ( prevVirtualCard ) ) {
85
90
return < NotFoundPage /> ;
86
91
}
87
92
@@ -106,7 +111,10 @@ function ReportVirtualCardFraudPage({
106
111
sendValidateCode = { sendValidateCode }
107
112
validateError = { validateError }
108
113
clearError = { ( ) => {
109
- Card . clearCardListErrors ( virtualCard . cardID ) ;
114
+ if ( ! virtualCard ?. cardID ) {
115
+ return ;
116
+ }
117
+ clearCardListErrors ( virtualCard . cardID ) ;
110
118
} }
111
119
onClose = { ( ) => setIsValidateCodeActionModalVisible ( false ) }
112
120
isVisible = { isValidateCodeActionModalVisible }
0 commit comments