From d6a64f45fd4530cfee4f7721f0c6e7ca28fe677f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 12 Sep 2016 19:20:55 +0200 Subject: Adding a notification stack for error messages --- .../javascripts/components/reducers/compose.jsx | 2 +- .../javascripts/components/reducers/follow.jsx | 2 +- .../javascripts/components/reducers/index.jsx | 4 +++- .../javascripts/components/reducers/meta.jsx | 2 +- .../components/reducers/notifications.jsx | 27 ++++++++++++++++++++++ .../javascripts/components/reducers/timelines.jsx | 2 +- 6 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 app/assets/javascripts/components/reducers/notifications.jsx (limited to 'app/assets/javascripts/components/reducers') 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; } -} +}; -- cgit