diff --git a/src/redux/middlewares/error.middleware.ts b/src/redux/middlewares/error.middleware.ts index e9f21c3b5a7dac995880108ae0a5a6d924439ed8..8c6bd8160be1d71fd632d1ec542b66c48c9017fc 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 da42c8e510cec2ec569012fd820a6b364ac0d840..4bc652535e50df366fad0a6f6cda6afe1f618a02 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 8a45368858b205cfa386ebe95cbd5fee9b86933c..df25ac8e84fcd7fd26e4a27b0b78c2fc4061770e 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 406df75fa2ba21f30f8c457f3b559e8fb498a2f5..e6d05b2732652bf8ceb927f41c324af05b0526b8 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 = {