浏览代码

Work around Prosody not properly setting type for headline messages

JC Brand 9 年之前
父节点
当前提交
d3c97486dd
共有 1 个文件被更改,包括 15 次插入10 次删除
  1. 15 10
      src/converse-headline.js

+ 15 - 10
src/converse-headline.js

@@ -22,15 +22,20 @@
     var onHeadlineMessage = function (message) {
         /* Handler method for all incoming messages of type "headline".
          */
-        var $message = $(message),
-            bare_jid = $message.attr('from');
-        converse.chatboxes.create({
-            'id': bare_jid,
-            'jid': bare_jid,
-            'fullname':  bare_jid,
-            'type': 'headline'
-        }).createMessage($message);
-        converse.emit('message', message);
+        var $message = $(message), from_jid = $message.attr('from');
+        if ($message.attr('type') === 'headline' || from_jid.indexOf('@') === -1) {
+            // Some servers (I'm looking at you Prosody) don't set the message
+            // type to "headline" when sending server messages. For now we
+            // check if an @ signal is included, and if not, we assume it's
+            // a headline message.
+            converse.chatboxes.create({
+                'id': from_jid,
+                'jid': from_jid,
+                'fullname':  from_jid,
+                'type': 'headline'
+            }).createMessage($message);
+            converse.emit('message', message);
+        }
         return true;
     };
 
@@ -107,7 +112,7 @@
 
             var registerHeadlineHandler = function () {
                 converse.connection.addHandler(
-                        onHeadlineMessage, null, 'message', 'headline');
+                        onHeadlineMessage, null, 'message');
             };
             converse.on('connected', registerHeadlineHandler);
             converse.on('reconnected', registerHeadlineHandler);