浏览代码

Option to ignore certain JIDs' chat state notifications

JC Brand 9 年之前
父节点
当前提交
ae6a7f4b02
共有 3 个文件被更改,包括 24 次插入0 次删除
  1. 1 0
      docs/CHANGES.md
  2. 17 0
      docs/source/configuration.rst
  3. 6 0
      src/converse-notification.js

+ 1 - 0
docs/CHANGES.md

@@ -6,6 +6,7 @@
   As a result `converse.listen.on('message');` has been deprecated, use `converse.stanza.on('message');` instead. [jcbrand]
   As a result `converse.listen.on('message');` has been deprecated, use `converse.stanza.on('message');` instead. [jcbrand]
 - Emit an event `chatBoxInitialized` once a chat box's initialize method has been called. [jcbrand]
 - Emit an event `chatBoxInitialized` once a chat box's initialize method has been called. [jcbrand]
 - Emit an event `statusInitialized` once the user's own status has been initialized upon startup. [jcbrand]
 - Emit an event `statusInitialized` once the user's own status has been initialized upon startup. [jcbrand]
+- New config option [chatstate_notification_blacklist](https://conversejs.org/docs/html/configuration.html#chatstate_notification_blacklist) [jcbrand]
 - Split converse.js up into different plugin modules. [jcbrand]
 - Split converse.js up into different plugin modules. [jcbrand]
 - Don't play sound notifications for OTR messages which are setting up an
 - Don't play sound notifications for OTR messages which are setting up an
   encrypted session. [jcbrand]
   encrypted session. [jcbrand]

+ 17 - 0
docs/source/configuration.rst

@@ -298,6 +298,23 @@ This setting can only be used together with ``allow_otr = true``.
     to retrieve your private key and read your all the chat messages in your
     to retrieve your private key and read your all the chat messages in your
     current session. Previous sessions however cannot be decrypted.
     current session. Previous sessions however cannot be decrypted.
 
 
+ chatstate_notification_blacklist
+---------------------------------
+
+* Default: ``[]``
+
+A list of JIDs to be ignored when showing desktop notifications of changed chat states.
+
+Some user's clients routinely connect and disconnect (likely on mobile) and
+each time a chat state notificaion is received (``online`` when connecting and
+then ``offline`` when disconnecting).
+
+When desktop notifications are turned on (see `show-desktop-notifications`_),
+then you'll receive notification messages each time this happens.
+
+Receiving constant notifications that a user's client is connecting and disconnecting
+is annoying, so this option allows you to ignore those JIDs.
+
 csi_waiting_time
 csi_waiting_time
 ----------------
 ----------------
 
 

+ 6 - 0
src/converse-notification.js

@@ -31,6 +31,8 @@
 
 
             this.updateSettings({
             this.updateSettings({
                 show_desktop_notifications: true,
                 show_desktop_notifications: true,
+                chatstate_notification_blacklist: [],
+                // ^ a list of JIDs to ignore concerning chat state notifications
                 play_sounds: false,
                 play_sounds: false,
                 sounds_path: '/sounds/',
                 sounds_path: '/sounds/',
                 notification_icon: '/logo/conversejs.png'
                 notification_icon: '/logo/conversejs.png'
@@ -127,6 +129,10 @@
                 /* Creates an HTML5 Notification to inform of a change in a
                 /* Creates an HTML5 Notification to inform of a change in a
                  * contact's chat state.
                  * contact's chat state.
                  */
                  */
+                if (_.contains(converse.chatstate_notification_blacklist, contact.get('jid'))) {
+                    // Don't notify if the user is being ignored.
+                    return;
+                }
                 var chat_state = contact.chat_status,
                 var chat_state = contact.chat_status,
                     message = null;
                     message = null;
                 if (chat_state === 'offline') {
                 if (chat_state === 'offline') {