comparison 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
parents c8ad387aab1c
children 566d0a56b37f
comparison
equal deleted inserted replaced
7332:ba32289e8d0b 7333:9d0e65d919e8
132 return true; 132 return true;
133 end); 133 end);
134 134
135 module:hook_global("user-deleted", function(event) 135 module:hook_global("user-deleted", function(event)
136 local username, host = event.username, event.host; 136 local username, host = event.username, event.host;
137 local origin = event.origin or prosody.hosts[host];
137 if host ~= module.host then return end 138 if host ~= module.host then return end
138 local bare = username .. "@" .. host; 139 local bare = username .. "@" .. host;
139 local roster = rm_load_roster(username, host); 140 local roster = rm_load_roster(username, host);
140 for jid, item in pairs(roster) do 141 for jid, item in pairs(roster) do
141 if jid then 142 if jid then
142 if item.subscription == "both" or item.subscription == "from" or roster[false].pending[jid] then 143 module:fire_event("roster-item-removed", {
143 module:send(st.presence({type="unsubscribed", from=bare, to=jid})); 144 username = username, jid = jid, item = item, roster = roster, origin = origin,
144 end 145 });
145 if item.subscription == "both" or item.subscription == "to" or item.ask then
146 module:send(st.presence({type="unsubscribe", from=bare, to=jid}));
147 end
148 end 146 end
149 end 147 end
150 end, 300); 148 end, 300);