|
- import { defineMessages } from 'react-intl';
- import { showAlert } from '../actions/alerts';
-
- const defaultFailSuffix = 'FAIL';
-
- const messages = defineMessages({
- unexpectedTitle: { id: 'alert.unexpected.title', defaultMessage: 'Oops!' },
- unexpectedMessage: { id: 'alert.unexpected.message', defaultMessage: 'An unexpected error occurred.' },
- });
-
- export default function errorsMiddleware() {
- return ({ dispatch }) => next => action => {
- if (action.type && !action.skipAlert) {
- const isFail = new RegExp(`${defaultFailSuffix}$`, 'g');
-
- if (action.type.match(isFail)) {
- if (action.error.response) {
- const { data, status, statusText } = action.error.response;
-
- let message = statusText;
- let title = `${status}`;
-
- if (data.error) {
- message = data.error;
- }
-
- dispatch(showAlert(title, message));
- } else {
- console.error(action.error);
- dispatch(showAlert(messages.unexpectedTitle, messages.unexpectedMessage));
- }
- }
- }
-
- return next(action);
- };
- };
|