about summary refs log tree commit diff
path: root/app/javascript/themes/glitch/middleware/errors.js
diff options
context:
space:
mode:
authorkibigo! <marrus-sh@users.noreply.github.com>2017-11-17 19:11:18 -0800
committerkibigo! <marrus-sh@users.noreply.github.com>2017-11-17 19:29:16 -0800
commit45c44989c8fb6e24badd18bb83ac5f68de0aceaf (patch)
tree794d088986d8518506e3e1eec0c8ffb7da5604b8 /app/javascript/themes/glitch/middleware/errors.js
parent5a9982b425d3db65d813eb0314a27cea16f0f52d (diff)
Forking glitch theme
Diffstat (limited to 'app/javascript/themes/glitch/middleware/errors.js')
-rw-r--r--app/javascript/themes/glitch/middleware/errors.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/app/javascript/themes/glitch/middleware/errors.js b/app/javascript/themes/glitch/middleware/errors.js
new file mode 100644
index 000000000..c54e7b0a2
--- /dev/null
+++ b/app/javascript/themes/glitch/middleware/errors.js
@@ -0,0 +1,31 @@
+import { showAlert } from 'themes/glitch/actions/alerts';
+
+const defaultFailSuffix = 'FAIL';
+
+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('Oops!', 'An unexpected error occurred.'));
+        }
+      }
+    }
+
+    return next(action);
+  };
+};