# HG changeset patch # User Matthew Wild # Date 1698944414 0 # Node ID d5ff386dc97fabc18b2bbbfec14bedc986092a2f # Parent 9edc698848e92cebff2f07169b599694f6ba9aa5 mod_groups_muc_bookmarks: Update bookmarks when a group MUC is added/removed diff -r 9edc698848e9 -r d5ff386dc97f mod_groups_muc_bookmarks/mod_groups_muc_bookmarks.lua --- a/mod_groups_muc_bookmarks/mod_groups_muc_bookmarks.lua Thu Nov 02 16:59:44 2023 +0000 +++ b/mod_groups_muc_bookmarks/mod_groups_muc_bookmarks.lua Thu Nov 02 17:00:14 2023 +0000 @@ -41,6 +41,7 @@ end local function inject_bookmark(jid, room, autojoin, name) + module:log("debug", "Injecting bookmark for %s into %s", room, jid); local pep_service = mod_pep.get_pep_service(jid_split(jid)) local current, err = get_current_bookmarks(jid, pep_service); @@ -97,3 +98,26 @@ module:hook("group-user-added", handle_user_added) module:hook("group-user-removed", handle_user_removed) + + +local function handle_muc_added(event) + -- Add MUC to all members' bookmarks + module:log("info", "Adding new group chat to all member bookmarks..."); + local muc_jid, muc_name = event.muc.jid, event.muc.name; + for member_username in pairs(mod_groups.get_members(event.group_id)) do + local member_jid = member_username .. "@" .. module.host; + inject_bookmark(member_jid, muc_jid, true, muc_name); + end +end + +local function handle_muc_removed(event) + -- Remove MUC from all members' bookmarks + local muc_jid = event.muc.jid; + for member_username in ipairs(mod_groups.get_members(event.group_id)) do + local member_jid = member_username .. "@" .. module.host; + remove_bookmark(member_jid, muc_jid); + end +end + +module:hook("group-chat-added", handle_muc_added) +module:hook("group-chat-removed", handle_muc_removed)