Diff

mod_vcard_muc/mod_vcard_muc.lua @ 3655:d7b589dec591

mod_vcard_muc: Factor out avatar hash retrieval into a function for easier reuse
author Kim Alvefur <zash@zash.se>
date Fri, 23 Aug 2019 23:01:16 +0200
parent 3077:f16b021e8a61
child 3656:3e0f4d727825
line wrap: on
line diff
--- a/mod_vcard_muc/mod_vcard_muc.lua	Sat Aug 24 21:49:51 2019 +0200
+++ b/mod_vcard_muc/mod_vcard_muc.lua	Fri Aug 23 23:01:16 2019 +0200
@@ -24,22 +24,25 @@
 		return rooms[jid];
 	end
 
-local function broadcast_presence(room_jid, to)
-	local room = get_room_from_jid(room_jid);
-	local room_node = jid_split(room_jid);
+local function get_photo_hash(room)
+	local room_node = jid_split(room.jid);
 	local vcard = st.deserialize(vcards:get(room_node));
-	local photo_hash;
-
 	if vcard then
 		local photo = vcard:get_child("PHOTO");
 
 		if photo then
 			local photo_b64 = photo:get_child_text("BINVAL");
 			local photo_raw = photo_b64 and base64.decode(photo_b64);
-			photo_hash = sha1(photo_raw, true);
+			return sha1(photo_raw, true);
 		end
 	end
 
+end
+
+local function broadcast_presence(room_jid, to)
+	local room = get_room_from_jid(room_jid);
+
+	local photo_hash = get_photo_hash(room)
 	local presence_vcard = st.presence({to = to, from = room_jid})
 		:tag("x", { xmlns = "vcard-temp:x:update" })
 			:tag("photo"):text(photo_hash):up();