Просмотр исходного кода

Add contact even if vcard fetching didn't work.

Also fixed a bug. We DO have to listen to the 'remove' event for roster items.
JC Brand 12 лет назад
Родитель
Сommit
8467dc7016
1 измененных файлов с 9 добавлено и 5 удалено
  1. 9 5
      converse.js

+ 9 - 5
converse.js

@@ -652,11 +652,16 @@
             converse.getVCard(
                 jid,
                 $.proxy(function (jid, fullname, image, image_type, url) {
-                    // XXX: Should we perhaps create a roster item here?
                     this.addContact(jid, fullname);
                 }, this),
-                $.proxy(function () {
+                $.proxy(function (stanza) {
                     console.log("An error occured while fetching vcard");
+                    if ($(stanza).find('error').attr('code') == '503') {
+                        // If we get service-unavailable, we continue to create
+                        // the user
+                        var jid = $(stanza).attr('from');
+                        this.addContact(jid, jid);
+                    }
                 }, this));
             $('.search-xmpp').hide();
         },
@@ -1952,9 +1957,8 @@
                 this.render(item);
             }, this);
 
-            this.model.on("destroy", function (item) {
-                this.removeRosterItem(item);
-            }, this);
+            this.model.on("remove", function (item) { this.removeRosterItem(item); }, this);
+            this.model.on("destroy", function (item) { this.removeRosterItem(item); }, this);
 
             this.$el.hide().html(this.template());
             this.model.fetch({add: true}); // Get the cached roster items from localstorage