app
assets
fonts
images
javascripts
components
actions
components
containers
features
locales
middleware
errors.jsx
loading_bar.jsx
sounds.jsx
reducers
selectors
store
.gitkeep
api.jsx
emoji.jsx
is_mobile.jsx
rtl.jsx
stream.jsx
application.js
application_public.js
components.js
extras.jsx
stylesheets
controllers
helpers
lib
mailers
models
services
views
workers
bin
config
db
docs
lib
log
public
spec
storybook
streaming
vendor
.babelrc
.buildpacks
.codeclimate.yml
.dockerignore
.env.production.sample
.env.test
.env.vagrant
.eslintrc
.gitignore
.nvmrc
.rspec
.rubocop.yml
.ruby-version
.slugignore
.travis.yml
CONTRIBUTING.md
Capfile
Dockerfile
Gemfile
Gemfile.lock
ISSUE_TEMPLATE.md
LICENSE
Procfile
README.md
Rakefile
Vagrantfile
app.json
config.ru
docker-compose.yml
package.json
scalingo.json
yarn.lock
34 lines
922 B
JavaScript
34 lines
922 B
JavaScript
import { showAlert } from '../actions/alerts';
|
|
|
|
const defaultSuccessSuffix = 'SUCCESS';
|
|
const defaultFailSuffix = 'FAIL';
|
|
|
|
export default function errorsMiddleware() {
|
|
return ({ dispatch }) => next => action => {
|
|
if (action.type && !action.skipAlert) {
|
|
const isFail = new RegExp(`${defaultFailSuffix}$`, 'g');
|
|
const isSuccess = new RegExp(`${defaultSuccessSuffix}$`, '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('Oops!', 'An unexpected error occurred.'));
|
|
}
|
|
}
|
|
}
|
|
|
|
return next(action);
|
|
};
|
|
};
|