| import internalServerErrorMiddleware from "./middleware/internalServerErrorMiddleware"; | import internalServerErrorMiddleware from "./middleware/internalServerErrorMiddleware"; | ||||
| import persistStore from "redux-persist/es/persistStore"; | import persistStore from "redux-persist/es/persistStore"; | ||||
| import accessTokensMiddleware from "./middleware/accessTokensMiddleware"; | import accessTokensMiddleware from "./middleware/accessTokensMiddleware"; | ||||
| import authenticationMiddleware from "./middleware/authenticationMiddleware"; | |||||
| const composeEnhancers = | const composeEnhancers = | ||||
| (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ && | (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ && | ||||
| loadingMiddleware, | loadingMiddleware, | ||||
| requestStatusMiddleware, | requestStatusMiddleware, | ||||
| internalServerErrorMiddleware, | internalServerErrorMiddleware, | ||||
| accessTokensMiddleware | |||||
| accessTokensMiddleware, | |||||
| authenticationMiddleware | |||||
| ) | ) | ||||
| ) | ) | ||||
| ); | ); |
| import i18next from "i18next"; | |||||
| import { attachPostRequestListener } from "../../request"; | |||||
| import { logoutUser } from "../actions/login/loginActions"; | |||||
| import { makeErrorToastMessage } from "../utils/makeToastMessage"; | |||||
| //Interceptor unique name | |||||
| export const authenticationMiddlewareInterceptorName = "AUTHENTICATION_MIDDLEWARE"; | |||||
| export default ({ dispatch }) => | |||||
| (next) => | |||||
| (action) => { | |||||
| attachPostRequestListener((error) => { | |||||
| if (!error.response) { | |||||
| return makeErrorToastMessage(i18next.t("apiErrors.somethingWentWrong")); | |||||
| } | |||||
| if (error.response.status === 401) { | |||||
| dispatch(logoutUser()); | |||||
| return makeErrorToastMessage(i18next.t("apiErrors.somethingWentWrong")); | |||||
| } | |||||
| return Promise.reject(error); | |||||
| }, authenticationMiddlewareInterceptorName); | |||||
| next(action); | |||||
| }; |