The code powering m.abunchtell.com https://m.abunchtell.com
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

38 行
1.1 KiB

  1. import { defineMessages } from 'react-intl';
  2. import { showAlert } from '../actions/alerts';
  3. const defaultFailSuffix = 'FAIL';
  4. const messages = defineMessages({
  5. unexpectedTitle: { id: 'alert.unexpected.title', defaultMessage: 'Oops!' },
  6. unexpectedMessage: { id: 'alert.unexpected.message', defaultMessage: 'An unexpected error occurred.' },
  7. });
  8. export default function errorsMiddleware() {
  9. return ({ dispatch }) => next => action => {
  10. if (action.type && !action.skipAlert) {
  11. const isFail = new RegExp(`${defaultFailSuffix}$`, 'g');
  12. if (action.type.match(isFail)) {
  13. if (action.error.response) {
  14. const { data, status, statusText } = action.error.response;
  15. let message = statusText;
  16. let title = `${status}`;
  17. if (data.error) {
  18. message = data.error;
  19. }
  20. dispatch(showAlert(title, message));
  21. } else {
  22. console.error(action.error);
  23. dispatch(showAlert(messages.unexpectedTitle, messages.unexpectedMessage));
  24. }
  25. }
  26. }
  27. return next(action);
  28. };
  29. };