Skip to content

Commit f51798b

Browse files
authored
Merge pull request #55163 from callstack-internal/update-fraud-flow-for-virtual-card
Redirect user for new virtual card after Fraud flow
2 parents bec182c + 29bd5c2 commit f51798b

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

src/pages/settings/Wallet/ReportVirtualCardFraudPage.tsx

+17-9
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import useLocalize from '@hooks/useLocalize';
1111
import usePrevious from '@hooks/usePrevious';
1212
import useThemeStyles from '@hooks/useThemeStyles';
1313
import {requestValidateCodeAction} from '@libs/actions/User';
14-
import * as ErrorUtils from '@libs/ErrorUtils';
14+
import {getLatestErrorMessage, getLatestErrorMessageField} from '@libs/ErrorUtils';
1515
import Navigation from '@libs/Navigation/Navigation';
1616
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
1717
import type {SettingsNavigatorParamList} from '@libs/Navigation/types';
1818
import NotFoundPage from '@pages/ErrorPage/NotFoundPage';
19-
import * as Card from '@userActions/Card';
19+
import {clearCardListErrors, reportVirtualExpensifyCardFraud} from '@userActions/Card';
2020
import ONYXKEYS from '@src/ONYXKEYS';
2121
import ROUTES from '@src/ROUTES';
2222
import type SCREENS from '@src/SCREENS';
@@ -39,8 +39,10 @@ function ReportVirtualCardFraudPage({
3939
const loginData = loginList?.[primaryLogin];
4040

4141
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);
4446

4547
const [isValidateCodeActionModalVisible, setIsValidateCodeActionModalVisible] = useState(false);
4648

@@ -56,15 +58,18 @@ function ReportVirtualCardFraudPage({
5658
return;
5759
}
5860

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]);
6165

6266
const handleValidateCodeEntered = useCallback(
6367
(validateCode: string) => {
6468
if (!virtualCard) {
6569
return;
6670
}
67-
Card.reportVirtualExpensifyCardFraud(virtualCard, validateCode);
71+
reportVirtualExpensifyCardFraud(virtualCard, validateCode);
72+
setIsValidateCodeActionModalVisible(false);
6873
},
6974
[virtualCard],
7075
);
@@ -81,7 +86,7 @@ function ReportVirtualCardFraudPage({
8186
setIsValidateCodeActionModalVisible(true);
8287
}, [setIsValidateCodeActionModalVisible]);
8388

84-
if (isEmptyObject(virtualCard)) {
89+
if (isEmptyObject(virtualCard) && isEmptyObject(prevVirtualCard)) {
8590
return <NotFoundPage />;
8691
}
8792

@@ -106,7 +111,10 @@ function ReportVirtualCardFraudPage({
106111
sendValidateCode={sendValidateCode}
107112
validateError={validateError}
108113
clearError={() => {
109-
Card.clearCardListErrors(virtualCard.cardID);
114+
if (!virtualCard?.cardID) {
115+
return;
116+
}
117+
clearCardListErrors(virtualCard.cardID);
110118
}}
111119
onClose={() => setIsValidateCodeActionModalVisible(false)}
112120
isVisible={isValidateCodeActionModalVisible}

0 commit comments

Comments
 (0)