diff options
author | Pepijn <pepijnfens@gmail.com> | 2016-11-17 19:46:07 +0100 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2016-11-17 13:46:07 -0500 |
commit | 6d2882f6e70bc1c8794e0193a574dfe254b57d79 (patch) | |
tree | a9f2919afee7026c7009de7b1a5cb2010cadde34 /webapp/stores/notification_store.jsx | |
parent | a7987149582a42e0f6d05813bc0f61fcdd6f805c (diff) | |
download | chat-6d2882f6e70bc1c8794e0193a574dfe254b57d79.tar.gz chat-6d2882f6e70bc1c8794e0193a574dfe254b57d79.tar.bz2 chat-6d2882f6e70bc1c8794e0193a574dfe254b57d79.zip |
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
Diffstat (limited to 'webapp/stores/notification_store.jsx')
-rw-r--r-- | webapp/stores/notification_store.jsx | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/webapp/stores/notification_store.jsx b/webapp/stores/notification_store.jsx index dc707b50e..d5e8acb4d 100644 --- a/webapp/stores/notification_store.jsx +++ b/webapp/stores/notification_store.jsx @@ -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; } }); |