From 8467dc7016a8609d3bda9fb209d0be749fe24222 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Mon, 13 May 2013 23:38:37 +0200 Subject: [PATCH] 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. --- converse.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/converse.js b/converse.js index 984349978..91a36cdb7 100644 --- a/converse.js +++ b/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