Explorar o código

Avoid false headline message positive for node-less MUC JIDs

JC Brand %!s(int64=7) %!d(string=hai) anos
pai
achega
37e4ed6fe8
Modificáronse 4 ficheiros con 8 adicións e 4 borrados
  1. 1 1
      src/converse-chatboxes.js
  2. 1 1
      src/converse-headline.js
  3. 1 1
      src/converse-notification.js
  4. 5 1
      src/utils.js

+ 1 - 1
src/converse-chatboxes.js

@@ -272,7 +272,7 @@
                             Strophe.LogLevel.INFO
                         );
                         return true;
-                    } else if (utils.isHeadlineMessage(message)) {
+                    } else if (utils.isHeadlineMessage(_converse, message)) {
                         // XXX: Ideally we wouldn't have to check for headline
                         // messages, but Prosody sends headline messages with the
                         // wrong type ('chat'), so we need to filter them out here.

+ 1 - 1
src/converse-headline.js

@@ -129,7 +129,7 @@
             function onHeadlineMessage (message) {
                 /* Handler method for all incoming messages of type "headline". */
                 const from_jid = message.getAttribute('from');
-                if (utils.isHeadlineMessage(message)) {
+                if (utils.isHeadlineMessage(_converse, message)) {
                     if (_.includes(from_jid, '@') && !_converse.allow_non_roster_messaging) {
                         return;
                     }

+ 1 - 1
src/converse-notification.js

@@ -93,7 +93,7 @@
                     return false;
                 } else if (message.getAttribute('type') === 'groupchat') {
                     return _converse.shouldNotifyOfGroupMessage(message);
-                } else if (utils.isHeadlineMessage(message)) {
+                } else if (utils.isHeadlineMessage(_converse, message)) {
                     // We want to show notifications for headline messages.
                     return _converse.isMessageToHiddenChat(message);
                 }

+ 5 - 1
src/utils.js

@@ -399,11 +399,15 @@
         return text && !!text.match(/^\?OTR/);
     };
 
-    u.isHeadlineMessage = function (message) {
+    u.isHeadlineMessage = function (_converse, message) {
         var from_jid = message.getAttribute('from');
         if (message.getAttribute('type') === 'headline') {
             return true;
         }
+        const chatbox = _converse.chatboxes.get(Strophe.getBareJidFromJid(from_jid));
+        if (chatbox && chatbox.get('type') === 'chatroom') {
+            return false;
+        }
         if (message.getAttribute('type') !== 'error' &&
                 !_.isNil(from_jid) &&
                 !_.includes(from_jid, '@')) {