aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/mod_vcard_legacy.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2019-01-10 15:39:02 +0100
committerKim Alvefur <zash@zash.se>2019-01-10 15:39:02 +0100
commitf7c48ad3bc1f4819ecb344729bf771887f6ab59b (patch)
tree33e30f7114e96a0356b5d3bf1d1c405a5801a5da /plugins/mod_vcard_legacy.lua
parentcc4a160cdb7d02a3c08d7ccbb0ce3e04025137ad (diff)
downloadprosody-f7c48ad3bc1f4819ecb344729bf771887f6ab59b.tar.gz
prosody-f7c48ad3bc1f4819ecb344729bf771887f6ab59b.zip
mod_vcard_legacy: Upgrade vcard-temp on login (fixes #1289)
Diffstat (limited to 'plugins/mod_vcard_legacy.lua')
-rw-r--r--plugins/mod_vcard_legacy.lua22
1 files changed, 18 insertions, 4 deletions
diff --git a/plugins/mod_vcard_legacy.lua b/plugins/mod_vcard_legacy.lua
index 80ce9e61..6a196b32 100644
--- a/plugins/mod_vcard_legacy.lua
+++ b/plugins/mod_vcard_legacy.lua
@@ -130,10 +130,6 @@ module:hook("iq-get/bare/vcard-temp:vCard", function (event)
end
end
- if not vcard_temp.tags[1] then
- vcard_temp = st.deserialize(vcards:get(jid_split(stanza.attr.to) or origin.username)) or vcard_temp;
- end
-
origin.send(st.reply(stanza):add_child(vcard_temp));
return true;
end);
@@ -310,3 +306,21 @@ 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);
+
+module:hook("resource-bind", function (event)
+ local session = event.session;
+ local username = session.username;
+ local vcard_temp = vcards:get(username);
+ if not vcard_temp then
+ session.log("debug", "No legacy vCard to migrate or already migrated");
+ return;
+ end
+ vcard_temp = st.deserialize(vcard_temp);
+ local pep_service = mod_pep.get_pep_service(username);
+ local ok, err = save_to_pep(pep_service, true, vcard_to_pep(vcard_temp));
+ if ok and vcards:set(username, nil) then
+ session.log("info", "Migrated vCard-temp to PEP");
+ else
+ session.log("info", "Failed to migrate vCard-temp to PEP: %s", err or "problem emptying 'vcard' store");
+ end
+end);