From bce8dc9113e802e184e31ab52272a5bd3bebf164 Mon Sep 17 00:00:00 2001 From: Christoph Scholz Date: Tue, 24 Sep 2019 11:49:39 +0200 Subject: [PATCH] Fixes #1714 don't notify if only message delivery receipt --- CHANGES.md | 1 + src/converse-notification.js | 1 + src/headless/utils/core.js | 12 ++++++++++++ 3 files changed, 14 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index fdc936716..a78b63d88 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,6 +7,7 @@ - #1712: `TypeError: plugin._features is not a function` - Bugfix: process stanzas from mam one-by-one in order to correctly process message receipts +- #1714 Bugfix: Don't notify the user in case we're receiving a message delivery receipt only ## 5.0.3 (2019-09-13) diff --git a/src/converse-notification.js b/src/converse-notification.js index 1caaeda51..6f8dadbf0 100644 --- a/src/converse-notification.js +++ b/src/converse-notification.js @@ -87,6 +87,7 @@ converse.plugins.add('converse-notification', { } const is_me = Strophe.getBareJidFromJid(message.getAttribute('from')) === _converse.bare_jid; return !u.isOnlyChatStateNotification(message) && + !u.isOnlyMessageDeliveryReceipt(message) && !is_me && (_converse.show_desktop_notifications === 'all' || _converse.isMessageToHiddenChat(message)); }; diff --git a/src/headless/utils/core.js b/src/headless/utils/core.js index ac9b73fa4..60fe1c375 100644 --- a/src/headless/utils/core.js +++ b/src/headless/utils/core.js @@ -148,6 +148,18 @@ u.isOnlyChatStateNotification = function (msg) { return msg['chat_state'] && u.isEmptyMessage(msg); }; +u.isOnlyMessageDeliveryReceipt = function (msg) { + if (msg instanceof Element) { + // See XEP-0184 Message Delivery Receipts + return (msg.querySelector('body') === null) && + (msg.querySelector('received') !== null); + } + if (msg instanceof Backbone.Model) { + msg = msg.attributes; + } + return msg['received'] && u.isEmptyMessage(msg); +}; + u.isHeadlineMessage = function (_converse, message) { const from_jid = message.getAttribute('from'); if (message.getAttribute('type') === 'headline') {