Pārlūkot izejas kodu

Merge branch '0.6.x'

JC Brand 11 gadi atpakaļ
vecāks
revīzija
646fcb36c7
1 mainītis faili ar 24 papildinājumiem un 17 dzēšanām
  1. 24 17
      converse.js

+ 24 - 17
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) {