@@ -26,6 +26,8 @@ const STATUS_CODES = {
2626
2727const ERROR_MESSAGES = {
2828 INVALID_CODE : 'Invalid code. Please try again.' ,
29+ INVALID_VERIFICATION_CODE : 'Invalid verification code. Please try again.' ,
30+ INVALID_RECOVERY_CODE : 'Invalid recovery code. Please try again.' ,
2931 MAX_SESSION_ATTEMPTS : 'Too many invalid attempts. Please try again.' ,
3032 SESSION_EXPIRED : 'Your session has expired. Please try again.' ,
3133 GLOBAL_LOCKOUT : 'Too many failed attempts. Please try again later.' ,
@@ -35,7 +37,7 @@ const ERROR_MESSAGES = {
3537 UNKNOWN_ERROR : 'An error occurred. Please try again.' ,
3638} ;
3739
38- export const parseError = ( error : AxiosError ) : ParsedError => {
40+ export const parseError = ( error : AxiosError , codeType ?: 'totp' | 'recovery' ) : ParsedError => {
3941 const responseData = error . response ?. data as ErrorResponse | undefined ;
4042 const backendMessage = responseData ?. result ?. [ 0 ] ?. message || '' ;
4143 const metadata = responseData ?. metadata ;
@@ -96,7 +98,7 @@ export const parseError = (error: AxiosError): ParsedError => {
9698 BACKEND_ERROR_PATTERNS . INVALID_TOTP . test ( backendMessage )
9799 ) {
98100 return {
99- message : ERROR_MESSAGES . INVALID_CODE ,
101+ message : ERROR_MESSAGES . INVALID_VERIFICATION_CODE ,
100102 scenario : ErrorScenario . INVALID_CODE ,
101103 metadata,
102104 } ;
@@ -108,7 +110,7 @@ export const parseError = (error: AxiosError): ParsedError => {
108110 BACKEND_ERROR_PATTERNS . INVALID_RECOVERY . test ( backendMessage )
109111 ) {
110112 return {
111- message : ERROR_MESSAGES . INVALID_CODE ,
113+ message : ERROR_MESSAGES . INVALID_RECOVERY_CODE ,
112114 scenario : ErrorScenario . INVALID_CODE ,
113115 metadata,
114116 } ;
@@ -146,10 +148,18 @@ export const parseError = (error: AxiosError): ParsedError => {
146148 } ;
147149 }
148150
149- // Fallback for 401 - likely invalid code
151+ // Fallback for 401 - likely invalid code, differentiate based on codeType
150152 if ( statusCode === STATUS_CODES . UNAUTHORIZED ) {
153+ let message = ERROR_MESSAGES . INVALID_CODE ;
154+
155+ if ( codeType === 'recovery' ) {
156+ message = ERROR_MESSAGES . INVALID_RECOVERY_CODE ;
157+ } else if ( codeType === 'totp' ) {
158+ message = ERROR_MESSAGES . INVALID_VERIFICATION_CODE ;
159+ }
160+
151161 return {
152- message : ERROR_MESSAGES . INVALID_CODE ,
162+ message,
153163 scenario : ErrorScenario . INVALID_CODE ,
154164 metadata,
155165 } ;
0 commit comments