Don't show desktop notifications for messages entering the channel th… (#4216)
* Don't show desktop notifications for messages entering the channel the user is currently on Coding style fixes Allow notifications if browser tab is not focussed * Don't show desktop notifications for messages entering the channel the user is currently on Coding style fixes Allow notifications if browser tab is not focussed * Mute sound when a user doesn't get a desktop notification * Also play sound on desktop notifications * Fixed reviewer's remarks: * Removed double notification check * Removed direct links to browser store, created separate actions
Этот коммит содержится в:
коммит произвёл
Harrison Healey
родитель
a798714958
Коммит
6d2882f6e7
@@ -26,6 +26,9 @@ class NotificationStoreClass extends EventEmitter {
|
||||
removeChangeListener(callback) {
|
||||
this.removeListener(CHANGE_EVENT, callback);
|
||||
}
|
||||
setFocus(focus) {
|
||||
this.inFocus = focus;
|
||||
}
|
||||
|
||||
handleRecievedPost(post, msgProps) {
|
||||
// Send desktop notification
|
||||
@@ -98,11 +101,21 @@ class NotificationStoreClass extends EventEmitter {
|
||||
duration = parseInt(user.notify_props.desktop_duration, 10) * 1000;
|
||||
}
|
||||
|
||||
//Play a sound if explicitly set in settings
|
||||
const sound = !user.notify_props || user.notify_props.desktop_sound === 'true';
|
||||
Utils.notifyMe(title, body, channel, teamId, duration, !sound);
|
||||
|
||||
if (sound && !UserAgent.isWindowsApp() && !UserAgent.isMacApp()) {
|
||||
Utils.ding();
|
||||
// Notify if you're not looking in the right channel or when
|
||||
// the window itself is not active
|
||||
const activeChannel = ChannelStore.getCurrent();
|
||||
const notify = activeChannel.id !== channel.id || !this.inFocus;
|
||||
|
||||
if (notify) {
|
||||
Utils.notifyMe(title, body, channel, teamId, duration, !sound);
|
||||
|
||||
//Don't add extra sounds on native desktop clients
|
||||
if (sound && !UserAgent.isWindowsApp() && !UserAgent.isMacApp() && !UserAgent.isMobileApp()) {
|
||||
Utils.ding();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -118,6 +131,9 @@ NotificationStore.dispatchToken = AppDispatcher.register((payload) => {
|
||||
NotificationStore.handleRecievedPost(action.post, action.websocketMessageProps);
|
||||
NotificationStore.emitChange();
|
||||
break;
|
||||
case ActionTypes.BROWSER_CHANGE_FOCUS:
|
||||
NotificationStore.setFocus(action.focus);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user