Selaa lähdekoodia

Option to ignore certain JIDs' chat state notifications

JC Brand 9 vuotta sitten
vanhempi
commit
ae6a7f4b02
3 muutettua tiedostoa jossa 24 lisäystä ja 0 poistoa
  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]
 - 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]
+- 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]
 - Don't play sound notifications for OTR messages which are setting up an
   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
     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
 ----------------
 

+ 6 - 0
src/converse-notification.js

@@ -31,6 +31,8 @@
 
             this.updateSettings({
                 show_desktop_notifications: true,
+                chatstate_notification_blacklist: [],
+                // ^ a list of JIDs to ignore concerning chat state notifications
                 play_sounds: false,
                 sounds_path: '/sounds/',
                 notification_icon: '/logo/conversejs.png'
@@ -127,6 +129,10 @@
                 /* Creates an HTML5 Notification to inform of a change in a
                  * 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,
                     message = null;
                 if (chat_state === 'offline') {