28 lines
767 B
JavaScript
28 lines
767 B
JavaScript
import isObject from 'lodash.isobject'
|
|
import { showToast } from '../actions/toasts'
|
|
import {
|
|
TOAST_TYPE_ERROR,
|
|
TOAST_TYPE_SUCCESS,
|
|
} from '../constants'
|
|
|
|
const defaultSuccessSuffix = 'SUCCESS'
|
|
const defaultFailSuffix = 'FAIL'
|
|
|
|
export default function errorsMiddleware() {
|
|
return ({ dispatch }) => (next) => (action) => {
|
|
if (isObject(action) && action.type && action.showToast) {
|
|
const isFail = new RegExp(`${defaultFailSuffix}$`, 'g')
|
|
const isSuccess = new RegExp(`${defaultSuccessSuffix}$`, 'g')
|
|
|
|
|
|
if (action.type.match(isFail)) {
|
|
dispatch(showToast(TOAST_TYPE_ERROR, action))
|
|
} else if (action.type.match(isSuccess)) {
|
|
dispatch(showToast(TOAST_TYPE_SUCCESS, action))
|
|
}
|
|
}
|
|
|
|
return next(action)
|
|
}
|
|
}
|