From 0767bf6ffad2a3be8a14b7dea3aebacef27323f1 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <p.gawron@atcomp.pl> Date: Thu, 23 May 2024 15:18:10 +0200 Subject: [PATCH] 403 should be reported as "Access denied." --- src/redux/middlewares/error.middleware.ts | 16 ++++++++++------ src/utils/error-report/errorReporting.ts | 4 +++- src/utils/error-report/getErrorCode.ts | 3 +++ .../getErrorMessage/getErrorMessage.constants.ts | 1 + 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/redux/middlewares/error.middleware.ts b/src/redux/middlewares/error.middleware.ts index e9f21c3b..8c6bd816 100644 --- a/src/redux/middlewares/error.middleware.ts +++ b/src/redux/middlewares/error.middleware.ts @@ -2,6 +2,7 @@ import type { AppListenerEffectAPI, AppStartListening } from '@/redux/store'; import { Action, createListenerMiddleware, isRejected } from '@reduxjs/toolkit'; import { createErrorData } from '@/utils/error-report/errorReporting'; import { openErrorReportModal } from '@/redux/modal/modal.slice'; +import { showToast } from '@/utils/showToast'; export const errorListenerMiddleware = createListenerMiddleware(); @@ -12,12 +13,15 @@ export const errorMiddlewareListener = async ( { getState, dispatch }: AppListenerEffectAPI, ): Promise<void> => { if (isRejected(action) && action.type !== 'user/getSessionValid/rejected') { - // eslint-disable-next-line no-console - console.log(action); - const errorData = await createErrorData(action.error, getState()); - // eslint-disable-next-line no-console - console.log(errorData); - dispatch(openErrorReportModal(errorData)); + if (action.error.code === '403') { + showToast({ + type: 'error', + message: 'Access denied.', + }); + } else { + const errorData = await createErrorData(action.error, getState()); + dispatch(openErrorReportModal(errorData)); + } } }; diff --git a/src/utils/error-report/errorReporting.ts b/src/utils/error-report/errorReporting.ts index da42c8e5..4bc65253 100644 --- a/src/utils/error-report/errorReporting.ts +++ b/src/utils/error-report/errorReporting.ts @@ -3,6 +3,7 @@ import { SerializedError } from '@reduxjs/toolkit'; import { ONE_THOUSAND } from '@/constants/common'; import { GENERIC_AXIOS_ERROR_CODE, + NOT_FOUND_AXIOS_ERROR_CODE, UNKNOWN_AXIOS_ERROR_CODE, UNKNOWN_ERROR, } from '@/utils/getErrorMessage/getErrorMessage.constants'; @@ -48,7 +49,8 @@ export const createErrorData = async ( code && code !== UNKNOWN_ERROR && code !== UNKNOWN_AXIOS_ERROR_CODE && - code !== GENERIC_AXIOS_ERROR_CODE + code !== GENERIC_AXIOS_ERROR_CODE && + code !== NOT_FOUND_AXIOS_ERROR_CODE ) { try { javaStacktrace = (await axiosInstance.get<JavaStacktrace>(apiPath.getStacktrace(code))).data diff --git a/src/utils/error-report/getErrorCode.ts b/src/utils/error-report/getErrorCode.ts index 8a453688..df25ac8e 100644 --- a/src/utils/error-report/getErrorCode.ts +++ b/src/utils/error-report/getErrorCode.ts @@ -14,6 +14,9 @@ export const getErrorCode = (error: unknown): string => { } else if (typeof error.response.data === 'string') { code = JSON.parse(error.response.data)['error-id']; } + if (code === undefined || code === null) { + code = `${error.response.status}`; + } } } catch (e) { code = UNKNOWN_AXIOS_ERROR_CODE; diff --git a/src/utils/getErrorMessage/getErrorMessage.constants.ts b/src/utils/getErrorMessage/getErrorMessage.constants.ts index 406df75f..e6d05b27 100644 --- a/src/utils/getErrorMessage/getErrorMessage.constants.ts +++ b/src/utils/getErrorMessage/getErrorMessage.constants.ts @@ -1,5 +1,6 @@ export const UNKNOWN_ERROR = 'An unknown error occurred. Please try again later.'; export const UNKNOWN_AXIOS_ERROR_CODE = 'UNKNOWN_AXIOS_ERROR'; +export const NOT_FOUND_AXIOS_ERROR_CODE = '404'; export const GENERIC_AXIOS_ERROR_CODE = 'ERR_BAD_REQUEST'; export const HTTP_ERROR_MESSAGES = { -- GitLab