@@ -38,21 +38,15 @@ export default MFAThemeWrapper;
3838
3939export function MFATheme ( props : WebAuthnMFAProps ) : JSX . Element {
4040 const { onBackButtonClicked, onSignIn } = props ;
41- const [ activeScreen , setActiveScreen ] = React . useState < MFAScreens > ( MFAScreens . SignIn ) ;
41+ const [ activeScreen , setActiveScreen ] = React . useState < MFAScreens > ( ( ) => {
42+ if ( ! props . featureState . hasRegisteredPassKey ) {
43+ return props . featureState . email ? MFAScreens . SignUpConfirmation : MFAScreens . SignUp ;
44+ }
45+ return MFAScreens . SignIn ;
46+ } ) ;
4247 const [ signUpEmail , setSignUpEmail ] = React . useState < string > ( "" ) ;
4348 const t = useTranslation ( ) ;
4449
45- const onRegisterPasskeyClick = React . useCallback ( ( ) => {
46- if ( ! props . featureState . canRegisterPasskey ) {
47- return ;
48- }
49- if ( props . featureState . email ) {
50- setActiveScreen ( MFAScreens . SignUpConfirmation ) ;
51- } else {
52- setActiveScreen ( MFAScreens . SignUp ) ;
53- }
54- } , [ props . featureState . email , props . featureState . canRegisterPasskey ] ) ;
55-
5650 const onSignUpContinue = React . useCallback (
5751 ( email : string ) => {
5852 if ( ! props . featureState . canRegisterPasskey ) {
@@ -64,6 +58,17 @@ export function MFATheme(props: WebAuthnMFAProps): JSX.Element {
6458 [ props . featureState . canRegisterPasskey ]
6559 ) ;
6660
61+ const onRegisterPasskeyClick = React . useCallback ( ( ) => {
62+ if ( ! props . featureState . canRegisterPasskey ) {
63+ return ;
64+ }
65+ if ( props . featureState . email ) {
66+ setActiveScreen ( MFAScreens . SignUpConfirmation ) ;
67+ } else {
68+ setActiveScreen ( MFAScreens . SignUp ) ;
69+ }
70+ } , [ props . featureState . email , props . featureState . canRegisterPasskey ] ) ;
71+
6772 const clearError = React . useCallback ( ( ) => {
6873 props . dispatch ( { type : "setError" , error : undefined } ) ;
6974 } , [ props ] ) ;
@@ -75,25 +80,32 @@ export function MFATheme(props: WebAuthnMFAProps): JSX.Element {
7580 [ props ]
7681 ) ;
7782
78- const onClickSignUpBackButton = React . useCallback ( ( ) => {
79- if ( ! props . featureState . canRegisterPasskey ) {
83+ const onClickSignUpConfirmationBackButton = React . useCallback ( ( ) => {
84+ if ( ! props . featureState . email ) {
85+ setActiveScreen ( MFAScreens . SignUp ) ;
8086 return ;
8187 }
82- setActiveScreen ( MFAScreens . SignIn ) ;
83- } , [ props . featureState . canRegisterPasskey ] ) ;
8488
85- const onClickSignUpConfirmationBackButton = React . useCallback ( ( ) => {
86- if ( props . featureState . email ) {
87- setActiveScreen ( MFAScreens . SignIn ) ;
88- } else {
89- setActiveScreen ( MFAScreens . SignUp ) ;
89+ if ( ! props . featureState . hasRegisteredPassKey ) {
90+ onBackButtonClicked ( ) ;
91+ return ;
9092 }
93+
94+ setActiveScreen ( MFAScreens . SignIn ) ;
9195 } , [ props . featureState . email ] ) ;
9296
9397 const onFetchError = React . useCallback ( ( ) => {
9498 onError ( "SOMETHING_WENT_WRONG_ERROR" ) ;
9599 } , [ onError ] ) ;
96100
101+ const onClickSignUpBackButton = React . useCallback ( ( ) => {
102+ if ( ! props . featureState . hasRegisteredPassKey ) {
103+ onBackButtonClicked ( ) ;
104+ return ;
105+ }
106+ setActiveScreen ( MFAScreens . SignIn ) ;
107+ } , [ props . featureState . hasRegisteredPassKey , onBackButtonClicked ( ) ] ) ;
108+
97109 if ( ! props . featureState . loaded ) {
98110 return < WebauthnMFALoadingScreen /> ;
99111 }
@@ -116,8 +128,8 @@ export function MFATheme(props: WebAuthnMFAProps): JSX.Element {
116128 canRegisterPasskey = { props . featureState . canRegisterPasskey }
117129 onSignIn = { onSignIn }
118130 error = { props . featureState . error }
119- onRegisterPasskeyClick = { onRegisterPasskeyClick }
120131 deviceSupported = { props . featureState . deviceSupported }
132+ onRegisterPasskeyClick = { onRegisterPasskeyClick }
121133 />
122134 ) : activeScreen === MFAScreens . SignUp ? (
123135 < WebauthnMFASignUp
0 commit comments