Mercurial > prosody-modules
diff mod_groups_internal/mod_groups_internal.lua @ 4389:6cfa313cd524
mod_groups_internal: manage associated MUC
Manage deletion and affiliations accordingly.
author | Jonas Schäfer <jonas@wielicki.name> |
---|---|
date | Mon, 25 Jan 2021 21:51:26 +0100 |
parents | 7de3c955cfe2 |
children | e5792ca1d704 |
line wrap: on
line diff
--- a/mod_groups_internal/mod_groups_internal.lua Mon Jan 25 21:47:38 2021 +0100 +++ b/mod_groups_internal/mod_groups_internal.lua Mon Jan 25 21:51:26 2021 +0100 @@ -183,6 +183,10 @@ function delete(group_id) if group_members_store:set(group_id, nil) then + info = get_info(group_id) + if info and info.muc_jid then + muc_host.delete_room(muc_host.get_room_from_jid(info.muc_jid)) + end return group_info_store:set(group_id, nil); end return nil, "internal-server-error"; @@ -196,6 +200,15 @@ if not group_memberships:set(group_id, username, {}) then return nil, "internal-server-error"; end + if group_info.muc_jid then + local room = muc_host.get_room_from_jid(group_info.muc_jid); + if room then + local user_jid = username .. "@" .. host; + room:set_affiliation(true, user_jid, "member") + else + module:log("warning", "failed to update affiliation for %s in %s", username, group_info.muc_jid) + end + end if not delay_update then do_all_group_subscriptions_by_group(group_id); end @@ -210,6 +223,15 @@ if not group_memberships:set(group_id, username, nil) then return nil, "internal-server-error"; end + if group_info.muc_jid then + local room = muc_host.get_room_from_jid(group_info.muc_jid); + if room then + local user_jid = username .. "@" .. host; + room:set_affiliation(true, user_jid, nil) + else + module:log("warning", "failed to update affiliation for %s in %s", username, group_info.muc_jid) + end + end return true; end