From b5cc93f531f15c64467c49548b5aa7a88833143e Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Mon, 20 Aug 2018 07:36:03 +0200
Subject: mod_vcard_legacy: Attach vcard-temp avatar hash to outgoing presence

---
 plugins/mod_vcard_legacy.lua | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

(limited to 'plugins')

diff --git a/plugins/mod_vcard_legacy.lua b/plugins/mod_vcard_legacy.lua
index 08f18b5b..7bc09638 100644
--- a/plugins/mod_vcard_legacy.lua
+++ b/plugins/mod_vcard_legacy.lua
@@ -53,3 +53,22 @@ module:hook("iq-get/bare/vcard-temp:vCard", function (event)
 	origin.send(st.reply(stanza):add_child(vcard_temp));
 	return true;
 end);
+
+local function inject_xep153(event)
+	local origin, stanza = event.origin, event.stanza;
+	local username = origin.username;
+	if not username then return end
+	local pep = mod_pep.get_pep_service(username);
+
+	stanza:remove_children("x", "vcard-temp:x:update");
+	local x_update = st.stanza("x", { xmlns = "vcard-temp:x:update" });
+	local ok, avatar_hash = pep:get_last_item("urn:xmpp:avatar:metadata", true);
+	if ok and avatar_hash then
+		x_update:text_tag("photo", avatar_hash);
+	end
+	stanza:add_direct_child(x_update);
+end
+
+module:hook("pre-presence/full", inject_xep153, 1);
+module:hook("pre-presence/bare", inject_xep153, 1);
+module:hook("pre-presence/host", inject_xep153, 1);
-- 
cgit v1.2.3