--- a/plugins/mod_vcard_legacy.lua Thu Sep 19 22:53:00 2019 +0200
+++ b/plugins/mod_vcard_legacy.lua Sat Sep 21 16:50:29 2019 +0200
@@ -321,13 +321,19 @@
if stanza.attr.type then return end
local pep_service = 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 x_update = stanza:get_child("x", "vcard-temp:x:update");
+ if not x_update then
+ x_update = st.stanza("x", { xmlns = "vcard-temp:x:update" }):tag("photo");
+ stanza:add_direct_child(x_update);
+ elseif x_update:get_child("photo") then
+ return; -- XEP implies that these should be left alone
+ else
+ x_update:tag("photo");
+ end
local ok, avatar_hash = pep_service:get_last_item("urn:xmpp:avatar:metadata", true);
if ok and avatar_hash then
- x_update:text_tag("photo", avatar_hash);
+ x_update:text(avatar_hash);
end
- stanza:add_direct_child(x_update);
end
module:hook("pre-presence/full", inject_xep153, 1);