about summary refs log tree commit diff
path: root/app/assets/javascripts/components/reducers
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2016-09-12 19:20:55 +0200
committerEugen Rochko <eugen@zeonfederated.com>2016-09-12 19:20:55 +0200
commitd6a64f45fd4530cfee4f7721f0c6e7ca28fe677f (patch)
tree64b6813d49d458c5833f40c9668c4677f56eaf42 /app/assets/javascripts/components/reducers
parent05b0c985b4d4b313e75ae506fb43b5690afade8d (diff)
Adding a notification stack for error messages
Diffstat (limited to 'app/assets/javascripts/components/reducers')
-rw-r--r--app/assets/javascripts/components/reducers/compose.jsx2
-rw-r--r--app/assets/javascripts/components/reducers/follow.jsx2
-rw-r--r--app/assets/javascripts/components/reducers/index.jsx4
-rw-r--r--app/assets/javascripts/components/reducers/meta.jsx2
-rw-r--r--app/assets/javascripts/components/reducers/notifications.jsx27
-rw-r--r--app/assets/javascripts/components/reducers/timelines.jsx2
6 files changed, 34 insertions, 5 deletions
diff --git a/app/assets/javascripts/components/reducers/compose.jsx b/app/assets/javascripts/components/reducers/compose.jsx
index b4a21b874..c0d9f4ff2 100644
--- a/app/assets/javascripts/components/reducers/compose.jsx
+++ b/app/assets/javascripts/components/reducers/compose.jsx
@@ -58,4 +58,4 @@ export default function compose(state = initialState, action) {
     default:
       return state;
   }
-}
+};
diff --git a/app/assets/javascripts/components/reducers/follow.jsx b/app/assets/javascripts/components/reducers/follow.jsx
index 348510eaf..838f12259 100644
--- a/app/assets/javascripts/components/reducers/follow.jsx
+++ b/app/assets/javascripts/components/reducers/follow.jsx
@@ -21,4 +21,4 @@ export default function compose(state = initialState, action) {
     default:
       return state;
   }
-}
+};
diff --git a/app/assets/javascripts/components/reducers/index.jsx b/app/assets/javascripts/components/reducers/index.jsx
index 3f3e1e928..6d275654a 100644
--- a/app/assets/javascripts/components/reducers/index.jsx
+++ b/app/assets/javascripts/components/reducers/index.jsx
@@ -3,10 +3,12 @@ import timelines           from './timelines';
 import meta                from './meta';
 import compose             from './compose';
 import follow              from './follow';
+import notifications       from './notifications';
 
 export default combineReducers({
   timelines,
   meta,
   compose,
-  follow
+  follow,
+  notifications
 });
diff --git a/app/assets/javascripts/components/reducers/meta.jsx b/app/assets/javascripts/components/reducers/meta.jsx
index d65c3c36d..71a14dbd3 100644
--- a/app/assets/javascripts/components/reducers/meta.jsx
+++ b/app/assets/javascripts/components/reducers/meta.jsx
@@ -10,4 +10,4 @@ export default function meta(state = initialState, action) {
     default:
       return state;
   }
-}
+};
diff --git a/app/assets/javascripts/components/reducers/notifications.jsx b/app/assets/javascripts/components/reducers/notifications.jsx
new file mode 100644
index 000000000..6ba453292
--- /dev/null
+++ b/app/assets/javascripts/components/reducers/notifications.jsx
@@ -0,0 +1,27 @@
+import { COMPOSE_SUBMIT_FAIL, COMPOSE_UPLOAD_FAIL } from '../actions/compose';
+import { FOLLOW_SUBMIT_FAIL }                       from '../actions/follow';
+import { REBLOG_FAIL, FAVOURITE_FAIL }              from '../actions/interactions';
+import { TIMELINE_REFRESH_FAIL }                    from '../actions/timelines';
+import { NOTIFICATION_DISMISS }                     from '../actions/notifications';
+import Immutable                                    from 'immutable';
+
+const initialState = Immutable.List();
+
+export default function meta(state = initialState, action) {
+  switch(action.type) {
+    case COMPOSE_SUBMIT_FAIL:
+    case COMPOSE_UPLOAD_FAIL:
+    case FOLLOW_SUBMIT_FAIL:
+    case REBLOG_FAIL:
+    case FAVOURITE_FAIL:
+    case TIMELINE_REFRESH_FAIL:
+      return state.push(Immutable.fromJS({
+        message: action.error.response.statusText,
+        title: `${action.error.response.status}`
+      }));
+    case NOTIFICATION_DISMISS:
+      return state.clear();
+    default:
+      return state;
+  }
+};
diff --git a/app/assets/javascripts/components/reducers/timelines.jsx b/app/assets/javascripts/components/reducers/timelines.jsx
index fb990ef54..b6ecdfb1f 100644
--- a/app/assets/javascripts/components/reducers/timelines.jsx
+++ b/app/assets/javascripts/components/reducers/timelines.jsx
@@ -66,4 +66,4 @@ export default function timelines(state = initialState, action) {
     default:
       return state;
   }
-}
+};