1
0
mirror of https://github.com/ascribe/onion.git synced 2024-12-22 09:23:13 +01:00

Merge pull request #160 from ascribe/add-default-notifications-message

Discard (and log) global notifications that do not have a message specified
This commit is contained in:
Brett Sun 2016-05-27 11:33:39 +02:00
commit 26dde8a42c
3 changed files with 21 additions and 15 deletions

View File

@ -26,11 +26,13 @@ let CreateEditionsForm = React.createClass({
}, },
handleSuccess(response) { handleSuccess(response) {
let notification = new GlobalNotificationModel(response.notification, 'success', 10000); const { handleSuccess } = this.props;
const notification = new GlobalNotificationModel(response.notification, 'success', 10000);
GlobalNotificationActions.appendGlobalNotification(notification); GlobalNotificationActions.appendGlobalNotification(notification);
if(this.props.handleSuccess) { if (typeof handleSuccess === 'function') {
this.props.handleSuccess(response); handleSuccess(response);
} }
}, },

View File

@ -1,19 +1,21 @@
'use strict'; 'use strict';
export default class GlobalNotificationModel { export default class GlobalNotificationModel {
constructor(message, type = 'info', dismissAfter = 5000) { constructor(message, type = 'success', dismissAfter = 5000) {
if(message) { if (type !== 'success' && type !== 'danger') {
this.message = message; throw new Error(`A notification's type either has to be success, or danger. Not: ${type}`);
} else {
throw new Error('A notifications message must be defined.');
} }
if(type === 'info' || type === 'success' || type === 'warning' || type === 'danger') { if (message) {
this.type = type; this.message = message;
} else { } else {
throw new Error('A notification\'s type either has to be info, success, warning, danger. Not: ' + type); console.logGlobal(new Error('Global notification did not contain a message and was ignored'), {
dismissAfter,
type
});
} }
this.dismissAfter = dismissAfter; this.dismissAfter = dismissAfter;
this.type = type;
} }
} }

View File

@ -16,12 +16,14 @@ class GlobalNotificationStore {
} }
onAppendGlobalNotification(newNotification) { onAppendGlobalNotification(newNotification) {
if (newNotification && newNotification.message) {
this.notificationQueue.push(newNotification); this.notificationQueue.push(newNotification);
if (!this.notificationsPaused && this.notificationStatus === 'ready') { if (!this.notificationsPaused && this.notificationStatus === 'ready') {
this.showNextNotification(); this.showNextNotification();
} }
} }
}
showNextNotification() { showNextNotification() {
this.notificationStatus = 'show'; this.notificationStatus = 'show';