From 428c51dffbb4adfaff404ce9ed163123cbb76813 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Tue, 3 Jul 2012 13:15:45 +0200 Subject: [PATCH] Add initial Roster support. --- chat.js | 27 +++++++++++++ chatui.js | 114 +++++++++++++++++++++++++++++++++++------------------- 2 files changed, 102 insertions(+), 39 deletions(-) diff --git a/chat.js b/chat.js index aa8a822d3..c01cd7093 100644 --- a/chat.js +++ b/chat.js @@ -281,3 +281,30 @@ var xmppchat = (function (jarnxmpp, $, console) { })(jarnxmpp || {}, jQuery, console || {log: function(){}}); +// Event handlers +// -------------- +$(document).ready(function () { + $(document).unbind('jarnxmpp.connected'); + $(document).bind('jarnxmpp.connected', function () { + // Logging + xmppchat.connection.rawInput = xmppchat.rawInput; + xmppchat.connection.rawOutput = xmppchat.rawOutput; + // Messages + xmppchat.connection.addHandler(xmppchat.Messages.messageReceived, null, 'message', 'chat'); + //Roster + xmppchat.connection.addHandler(xmppchat.Roster.rosterResult, Strophe.NS.ROSTER, 'iq', 'result'); + xmppchat.connection.addHandler(xmppchat.Roster.rosterSuggestedItem, 'http://jabber.org/protocol/rosterx', 'message', null); + // Presence + xmppchat.connection.addHandler(xmppchat.Presence.presenceReceived, null, 'presence', null); + + xmppchat.UI.restoreOpenChats(); + + xmppchat.Roster = Strophe._connectionPlugins.roster; + xmppchat.Roster._connection = xmppchat.connection; + xmppchat.Roster.get(function (contacts) { + xmppchat.Roster.contacts = contacts; + $(document).trigger('xmppchat.roster_updated'); + }); + xmppchat.Presence.sendPresence(); + }); +}); diff --git a/chatui.js b/chatui.js index ad7f23c86..b690a81a5 100644 --- a/chatui.js +++ b/chatui.js @@ -37,7 +37,7 @@ xmppchat.UI = (function (xmppUI, $, console) { if ($('#online-users-' + user_id).length > 0) { return; } var li = $('
  • ').attr('id', 'online-users-'+user_id).attr('data-recipient', bare_jid); li.append($('').addClass('user-details-toggle').text(data.fullname)); - $('#online-users').append(li); + $('#xmpp-contacts').append(li); }); } else { // status is offline and the user isn't shown as online return; @@ -456,6 +456,29 @@ xmppchat.UI = (function (xmppUI, $, console) { } } }; + + ob.createStatusSelectWidget = function () { + var select = $('select#select-xmpp-status'), + selected = select.find('option[selected]'), + chat_status = selected.val() || xmppchat.Presence.getOwnStatus() || 'online'; + options = $('option', select); + + // create
    and
    with selected value inside it + select.parent().append(''); + + $("#target").append('
    I am '+chat_status + + '' + chat_status + '
    '); + + $("#target").append('
      '); + // iterate through all the