diff --git a/docs/CHANGES.md b/docs/CHANGES.md index a9bc4ebdb..46f80444f 100755 --- a/docs/CHANGES.md +++ b/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] diff --git a/docs/source/configuration.rst b/docs/source/configuration.rst index 8afdd67b3..4a80d293a 100644 --- a/docs/source/configuration.rst +++ b/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 ---------------- diff --git a/src/converse-notification.js b/src/converse-notification.js index 28b08a2e3..10e1c16e1 100644 --- a/src/converse-notification.js +++ b/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') {