diff --git a/converse.js b/converse.js index 305b9ac06..15c2a49b3 100644 --- a/converse.js +++ b/converse.js @@ -1469,7 +1469,7 @@ }, featureAdded: function (feature) { - if (feature.get('var') == 'http://jabber.org/protocol/muc') { + if ((feature.get('var') == 'http://jabber.org/protocol/muc') && (converse.allow_muc)) { this.roomspanel.muc_domain = feature.get('from'); var $server= this.$el.find('input.new-chatroom-server'); if (! $server.is(':focus')) { @@ -2072,6 +2072,14 @@ } // This will make sure the Roster is set up this.get('controlbox').set({connected:true}); + + // Register message handler + converse.connection.addHandler( + $.proxy(function (message) { + this.messageReceived(message); + return true; + }, this), null, 'message', 'chat'); + // Get cached chatboxes from localstorage this.fetch({ add: true, @@ -3136,9 +3144,24 @@ this.roster = new this.RosterItems(); this.roster.localStorage = new Backbone.LocalStorage( hex_sha1('converse.rosteritems-'+converse.bare_jid)); + + // Register callbacks that depend on the roster this.connection.roster.registerCallback( $.proxy(this.roster.rosterHandler, this.roster), null, 'presence', null); + + this.connection.addHandler( + $.proxy(this.roster.subscribeToSuggestedItems, this.roster), + 'http://jabber.org/protocol/rosterx', 'message', null); + + this.connection.addHandler( + $.proxy(function (presence) { + this.presenceHandler(presence); + return true; + }, this.roster), null, 'presence', null); + + // No create the view which will fetch roster items from + // localStorage this.rosterview = new this.RosterView({'model':this.roster}); }; @@ -3155,22 +3178,6 @@ this.initStatus($.proxy(function () { this.initRoster(); this.chatboxes.onConnected(); - this.connection.addHandler( - $.proxy(this.roster.subscribeToSuggestedItems, this.roster), - 'http://jabber.org/protocol/rosterx', 'message', null); - - this.connection.addHandler( - $.proxy(function (presence) { - this.presenceHandler(presence); - return true; - }, this.roster), null, 'presence', null); - - this.connection.addHandler( - $.proxy(function (message) { - this.chatboxes.messageReceived(message); - return true; - }, this), null, 'message', 'chat'); - this.connection.roster.get(function () {}); $(window).on("blur focus", $.proxy(function(e) {