Changeset

229:279c0e89c3b3

plugins.vcard_update: Update for util.vcard changes.
author Kim Alvefur <zash@zash.se>
date Sun, 06 Nov 2011 20:38:15 +0100
parents 228:c5a4f82e2fd6
children 230:44a6da432e7e
files plugins/vcard_update.lua
diffstat 1 files changed, 10 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/vcard_update.lua	Sun Nov 06 20:04:19 2011 +0100
+++ b/plugins/vcard_update.lua	Sun Nov 06 20:38:15 2011 +0100
@@ -31,13 +31,17 @@
 	local x_vcard_update;
 
 	function update_vcard_photo(vCard) 
-		local photo = vCard and vCard:get_child("PHOTO");
-		local binval = photo and photo:get_child("BINVAL");
-		local data = binval and binval:get_text();
+		local data;
+		for i=1,#vCard do
+			if vCard[i].name == "PHOTO" then
+				data = vCard[i][1];
+				break
+			end
+		end
 		if data then
 			local hash = sha1(unb64(data), true);
 			x_vcard_update = verse.stanza("x", { xmlns = xmlns_vcard_update })
-				:tag("photo"):text(hash);
+			:tag("photo"):text(hash);
 
 			stream:resend_presence()
 		else
@@ -70,12 +74,8 @@
 		initial_vcard_fetch_started = true;
 		-- if stream:jid_supports(nil, xmlns_vcard) then TODO this, correctly
 		stream:get_vcard(nil, function(response)
-			-- FIXME Picking out the vCard element should be done in get_vcard()
-			if response.attr.type == "result" then
-				local vCard = response:get_child("vCard", xmlns_vcard);
-				if vCard then
-					update_vcard_photo(vCard);
-				end
+			if response then
+				update_vcard_photo(response)
 			end
 			stream:event("ready");
 		end);