]> git.babelmonkeys.de Git - xmppchat.git/blobdiff - js/main.js
Fix subject handling
[xmppchat.git] / js / main.js
index 2647add49e260805a76efdd89647eb1714a3b01b..7dbe8e5999c52042a9731da9467a7680b9dd6c68 100644 (file)
@@ -1,7 +1,3 @@
-var BOSH_LOCATION = '/http-bind/';
-var room = 'guests@conference.babelmonkeys.de';
-var jid = 'muckl@babelmonkeys.de'
-var password = 'ooje0OjuJeekaek6';
 var connection = null;
 var nickname;
 
@@ -77,18 +73,48 @@ function addBubble(nick) {
 function handleMessage(msg) {
        var html = '';
        var sender = Strophe.getResourceFromJid(msg.getAttribute('from'));
+       if (sender) {
+               sender = Strophe.xmlescape(sender);
+       } else {
+               sender = false;
+       }
        var type = msg.getAttribute('type');
-       var body = Strophe.getText(msg.getElementsByTagName('body')[0]);
+       var body = msg.getElementsByTagName('body')[0];
+       if (body) {
+               body = Strophe.xmlescape(Strophe.getText(body));
+       } else {
+               body = false;
+       }
+       var subject = msg.getElementsByTagName('subject')[0];
+       if (subject) {
+               subject = Strophe.xmlescape(Strophe.getText(subject));
+       } else {
+               subject = false;
+       }
 
        html += '<div class="msg">';
-       if (sender) {
-               html += '<span class="sender">';
-               html += sender;
-               html += ':</span> ';
-               html += body + '</div>';
-       } else {
+       if (body) {
+               if (sender) {
+                       if (body.search(/^\/me/) == 0) {
+                               body = body.replace(/^\/me/, sender);
+                               html += '<span class="sender">';
+                               html += body;
+                               html += '</span></div>';
+                       } else {
+                               html += '<span class="sender">';
+                               html += sender;
+                               html += ':</span> ';
+                               html += body + '</div>';
+                       }
+               } else {
+                       html += '<span class="server">';
+                       html += body + '</span></div>';
+               }
+       } else if (subject) {
                html += '<span class="server">';
-               html += body + '</span></div>';
+               html += "The subject is: " + subject + '</span></div>';
+       } else {
+               return true;
        }
 
        if (type == 'chat') {
@@ -112,8 +138,10 @@ function handlePresence(presence) {
        if (type == 'unavailable') {
                element = document.getElementById(nick);
                roster_list.removeChild(element);
+               $('#chat').append('<div class="msg"><span class="server">' + nick + ' left the groupchat</span></div>');
        } else {
                roster_list.innerHTML += '<li id="' + nick + '" onclick="addBubble(' + "'" + nick + "')" + '" >' + nick + '</li>';
+               $('#chat').append('<div class="msg"><span class="server">' + nick + ' joined the groupchat</span></div>');
        }
 
        return true;