mirror of https://github.com/mastodon/mastodon
Adding a notification stack for error messages
parent
05b0c985b4
commit
d6a64f45fd
@ -0,0 +1,8 @@
|
|||||||
|
export const NOTIFICATION_DISMISS = 'NOTIFICATION_DISMISS';
|
||||||
|
|
||||||
|
export function dismissNotification(notification) {
|
||||||
|
return {
|
||||||
|
type: NOTIFICATION_DISMISS,
|
||||||
|
notification: notification
|
||||||
|
};
|
||||||
|
};
|
@ -0,0 +1,25 @@
|
|||||||
|
import { connect } from 'react-redux';
|
||||||
|
import { NotificationStack } from 'react-notification';
|
||||||
|
import { dismissNotification } from '../actions/notifications';
|
||||||
|
|
||||||
|
const mapStateToProps = (state, props) => {
|
||||||
|
return {
|
||||||
|
notifications: state.get('notifications').map((item, i) => ({
|
||||||
|
message: item.get('message'),
|
||||||
|
title: item.get('title'),
|
||||||
|
key: i,
|
||||||
|
action: 'Dismiss',
|
||||||
|
dismissAfter: 5000
|
||||||
|
})).toJS()
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const mapDispatchToProps = (dispatch) => {
|
||||||
|
return {
|
||||||
|
onDismiss: notifiction => {
|
||||||
|
dispatch(dismissNotification(notifiction));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export default connect(mapStateToProps, mapDispatchToProps)(NotificationStack);
|
@ -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;
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue