Mercurial > prosody-hg
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); |
