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