@@ -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,41 @@ export function MFATheme(props: WebAuthnMFAProps): JSX.Element {
7580 [ props ]
7681 ) ;
7782
78- const onClickSignUpBackButton = React . useCallback ( ( ) => {
79- if ( ! props . featureState . canRegisterPasskey ) {
80- return ;
81- }
82- setActiveScreen ( MFAScreens . SignIn ) ;
83- } , [ props . featureState . canRegisterPasskey ] ) ;
84-
8583 const onClickSignUpConfirmationBackButton = React . useCallback ( ( ) => {
86- if ( props . featureState . email ) {
87- setActiveScreen ( MFAScreens . SignIn ) ;
88- } else {
84+ if ( ! props . featureState . email ) {
8985 setActiveScreen ( MFAScreens . SignUp ) ;
86+ return ;
9087 }
91- } , [ props . featureState . email ] ) ;
88+ if ( ! props . featureState . hasRegisteredPassKey && ! props . featureState . showBackButton ) {
89+ return ;
90+ }
91+ if ( ! props . featureState . hasRegisteredPassKey ) {
92+ onBackButtonClicked ( ) ;
93+ return ;
94+ }
95+ setActiveScreen ( MFAScreens . SignIn ) ;
96+ } , [
97+ props . featureState . email ,
98+ props . featureState . hasRegisteredPassKey ,
99+ props . featureState . showBackButton ,
100+ onBackButtonClicked ,
101+ ] ) ;
92102
93103 const onFetchError = React . useCallback ( ( ) => {
94104 onError ( "SOMETHING_WENT_WRONG_ERROR" ) ;
95105 } , [ onError ] ) ;
96106
107+ const onClickSignUpBackButton = React . useCallback ( ( ) => {
108+ if ( ! props . featureState . hasRegisteredPassKey && ! props . featureState . showBackButton ) {
109+ return ;
110+ }
111+ if ( ! props . featureState . hasRegisteredPassKey ) {
112+ onBackButtonClicked ( ) ;
113+ return ;
114+ }
115+ setActiveScreen ( MFAScreens . SignIn ) ;
116+ } , [ props . featureState . hasRegisteredPassKey , props . featureState . showBackButton , onBackButtonClicked ] ) ;
117+
97118 if ( ! props . featureState . loaded ) {
98119 return < WebauthnMFALoadingScreen /> ;
99120 }
@@ -116,8 +137,8 @@ export function MFATheme(props: WebAuthnMFAProps): JSX.Element {
116137 canRegisterPasskey = { props . featureState . canRegisterPasskey }
117138 onSignIn = { onSignIn }
118139 error = { props . featureState . error }
119- onRegisterPasskeyClick = { onRegisterPasskeyClick }
120140 deviceSupported = { props . featureState . deviceSupported }
141+ onRegisterPasskeyClick = { onRegisterPasskeyClick }
121142 />
122143 ) : activeScreen === MFAScreens . SignUp ? (
123144 < WebauthnMFASignUp
0 commit comments