Skip to content

Commit c6be012

Browse files
fix: differentiate TOTP vs recovery code error messages in ViewRecoveryCodes
1 parent fb4d88e commit c6be012

File tree

3 files changed

+145
-53
lines changed

3 files changed

+145
-53
lines changed

src/modules/Dashboard/features/AccountSettings/ViewRecoveryCodes/ViewRecoveryCodes.utils.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ const STATUS_CODES = {
2626

2727
const 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

Comments
 (0)