1- import React , { useCallback , useEffect , useRef , useState } from 'react' ;
1+ import React , { useEffect , useRef } from 'react' ;
22import { View } from 'react-native' ;
33import FormAlertWithSubmitButton from '@components/FormAlertWithSubmitButton' ;
44import InteractiveStepWrapper from '@components/InteractiveStepWrapper' ;
55import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription' ;
66import ScrollView from '@components/ScrollView' ;
77import Text from '@components/Text' ;
8- import ValidateCodeActionModal from '@components/ValidateCodeActionModal' ;
9- import useDefaultFundID from '@hooks/useDefaultFundID' ;
108import useLocalize from '@hooks/useLocalize' ;
119import useNetwork from '@hooks/useNetwork' ;
1210import useOnyx from '@hooks/useOnyx' ;
13- import usePermissions from '@hooks/usePermissions' ;
1411import useThemeStyles from '@hooks/useThemeStyles' ;
15- import { clearIssueNewCardError , clearIssueNewCardFlow , issueExpensifyCard , setIssueNewCardStepAndData } from '@libs/actions/Card' ;
16- import { requestValidateCodeAction , resetValidateActionCodeSent } from '@libs/actions/User' ;
12+ import { setIssueNewCardStepAndData } from '@libs/actions/Card' ;
13+ import { resetValidateActionCodeSent } from '@libs/actions/User' ;
1714import { getTranslationKeyForLimitType } from '@libs/CardUtils' ;
1815import { convertToShortDisplayString } from '@libs/CurrencyUtils' ;
19- import { getLatestErrorMessage , getLatestErrorMessageField } from '@libs/ErrorUtils' ;
16+ import { getLatestErrorMessage } from '@libs/ErrorUtils' ;
2017import { getUserNameByEmail } from '@libs/PersonalDetailsUtils' ;
2118import Navigation from '@navigation/Navigation' ;
2219import CONST from '@src/CONST' ;
2320import ONYXKEYS from '@src/ONYXKEYS' ;
2421import ROUTES from '@src/ROUTES' ;
25- import type { Route } from '@src/ROUTES' ;
2622import type { IssueNewCardStep } from '@src/types/onyx/Card' ;
2723
2824type ConfirmationStepProps = {
2925 /** ID of the policy that the card will be issued under */
3026 policyID : string | undefined ;
3127
32- /** Route to navigate to */
33- backTo ?: Route ;
34-
3528 /** Array of step names */
3629 stepNames : readonly string [ ] ;
3730
3831 /** Start from step index */
3932 startStepIndex : number ;
4033} ;
4134
42- function ConfirmationStep ( { policyID, backTo , stepNames, startStepIndex} : ConfirmationStepProps ) {
35+ function ConfirmationStep ( { policyID, stepNames, startStepIndex} : ConfirmationStepProps ) {
4336 const { translate} = useLocalize ( ) ;
4437 const styles = useThemeStyles ( ) ;
4538 const { isOffline} = useNetwork ( ) ;
46- const [ account ] = useOnyx ( ONYXKEYS . ACCOUNT , { canBeMissing : true } ) ;
4739 const [ issueNewCard ] = useOnyx ( `${ ONYXKEYS . COLLECTION . ISSUE_NEW_EXPENSIFY_CARD } ${ policyID } ` , { canBeMissing : true } ) ;
4840 const [ policy ] = useOnyx ( `${ ONYXKEYS . COLLECTION . POLICY } ${ policyID } ` , { canBeMissing : true } ) ;
49- const validateError = getLatestErrorMessageField ( issueNewCard ) ;
50- const [ isValidateCodeActionModalVisible , setIsValidateCodeActionModalVisible ] = useState ( false ) ;
5141 const data = issueNewCard ?. data ;
52- const isSuccessful = issueNewCard ?. isSuccessful ;
53- const defaultFundID = useDefaultFundID ( policyID ) ;
54- const { isBetaEnabled} = usePermissions ( ) ;
5542 const hasApprovalError = ! ! policy ?. errorFields ?. approvalMode ;
5643 const isAddApprovalEnabled = policy ?. approvalMode !== CONST . POLICY . APPROVAL_MODE . OPTIONAL && ! hasApprovalError ;
5744 const shouldDisableSubmitButton = ! isAddApprovalEnabled && data ?. limitType === CONST . EXPENSIFY_CARD . LIMIT_TYPES . SMART ;
@@ -63,18 +50,6 @@ function ConfirmationStep({policyID, backTo, stepNames, startStepIndex}: Confirm
6350 resetValidateActionCodeSent ( ) ;
6451 } , [ ] ) ;
6552
66- useEffect ( ( ) => {
67- if ( ! isSuccessful ) {
68- return ;
69- }
70- setIsValidateCodeActionModalVisible ( false ) ;
71- } , [ isSuccessful ] ) ;
72-
73- const submit = ( validateCode : string ) => {
74- // NOTE: For Expensify Card UK/EU, the backend will automatically detect the correct feedCountry to use
75- issueExpensifyCard ( defaultFundID , policyID , isBetaEnabled ( CONST . BETAS . EXPENSIFY_CARD_EU_UK ) ? '' : CONST . COUNTRY . US , validateCode , data ) ;
76- } ;
77-
7853 const errorMessage = getLatestErrorMessage ( issueNewCard ) || ( shouldDisableSubmitButton ? translate ( 'workspace.card.issueNewCard.disabledApprovalForSmartLimitError' ) : '' ) ;
7954
8055 const editStep = ( step : IssueNewCardStep ) => {
@@ -87,19 +62,6 @@ function ConfirmationStep({policyID, backTo, stepNames, startStepIndex}: Confirm
8762
8863 const translationForLimitType = getTranslationKeyForLimitType ( data ?. limitType ) ;
8964
90- const onRedirect = useCallback ( ( ) => {
91- if ( ! isSuccessful ) {
92- return ;
93- }
94- if ( backTo ) {
95- Navigation . goBack ( backTo ) ;
96- } else {
97- Navigation . navigate ( ROUTES . WORKSPACE_EXPENSIFY_CARD . getRoute ( policyID ) ) ;
98- }
99-
100- clearIssueNewCardFlow ( policyID ) ;
101- } , [ backTo , policyID , isSuccessful ] ) ;
102-
10365 return (
10466 < InteractiveStepWrapper
10567 wrapperID = { ConfirmationStep . displayName }
@@ -158,27 +120,16 @@ function ConfirmationStep({policyID, backTo, stepNames, startStepIndex}: Confirm
158120 isDisabled = { isOffline || shouldDisableSubmitButton }
159121 isMessageHtml = { shouldDisableSubmitButton }
160122 isLoading = { issueNewCard ?. isLoading }
161- onSubmit = { ( ) => setIsValidateCodeActionModalVisible ( true ) }
123+ onSubmit = { ( ) => {
124+ if ( ! policyID ) {
125+ return ;
126+ }
127+ Navigation . navigate ( ROUTES . WORKSPACE_EXPENSIFY_CARD_ISSUE_NEW_CONFIRM_MAGIC_CODE . getRoute ( policyID , ROUTES . WORKSPACE_EXPENSIFY_CARD . getRoute ( policyID ) ) ) ;
128+ } }
162129 buttonText = { translate ( 'workspace.card.issueCard' ) }
163130 />
164131 </ View >
165132 </ ScrollView >
166- { ! ! issueNewCard && (
167- < ValidateCodeActionModal
168- handleSubmitForm = { submit }
169- isLoading = { issueNewCard ?. isLoading }
170- sendValidateCode = { requestValidateCodeAction }
171- validateCodeActionErrorField = { data ?. cardType === CONST . EXPENSIFY_CARD . CARD_TYPE . PHYSICAL ? 'createExpensifyCard' : 'createAdminIssuedVirtualCard' }
172- validateError = { validateError }
173- clearError = { ( ) => clearIssueNewCardError ( policyID ) }
174- onClose = { ( ) => setIsValidateCodeActionModalVisible ( false ) }
175- isVisible = { isValidateCodeActionModalVisible }
176- title = { translate ( 'cardPage.validateCardTitle' ) }
177- descriptionPrimary = { translate ( 'cardPage.enterMagicCode' , { contactMethod : account ?. primaryLogin ?? '' } ) }
178- onModalHide = { onRedirect }
179- disableAnimation
180- />
181- ) }
182133 </ InteractiveStepWrapper >
183134 ) ;
184135}
0 commit comments