Diff

plugins/mod_roster.lua @ 7333:9d0e65d919e8

mod_roster: Handle roster item removal with event on user deletion
author Kim Alvefur <zash@zash.se>
date Mon, 04 Apr 2016 17:18:27 +0200
parent 7331:c8ad387aab1c
child 7334:566d0a56b37f
line wrap: on
line diff
--- a/plugins/mod_roster.lua	Mon Apr 04 17:15:47 2016 +0200
+++ b/plugins/mod_roster.lua	Mon Apr 04 17:18:27 2016 +0200
@@ -134,17 +134,15 @@
 
 module:hook_global("user-deleted", function(event)
 	local username, host = event.username, event.host;
+	local origin = event.origin or prosody.hosts[host];
 	if host ~= module.host then return end
 	local bare = username .. "@" .. host;
 	local roster = rm_load_roster(username, host);
 	for jid, item in pairs(roster) do
 		if jid then
-			if item.subscription == "both" or item.subscription == "from" or roster[false].pending[jid] then
-				module:send(st.presence({type="unsubscribed", from=bare, to=jid}));
-			end
-			if item.subscription == "both" or item.subscription == "to" or item.ask then
-				module:send(st.presence({type="unsubscribe", from=bare, to=jid}));
-			end
+			module:fire_event("roster-item-removed", {
+				username = username, jid = jid, item = item, roster = roster, origin = origin,
+			});
 		end
 	end
 end, 300);