# HG changeset patch # User Matthew Wild # Date 1269268343 0 # Node ID 6706a02df2713b11b8d7b7af206d304a36d479d9 # Parent bcfd76cc9b7d1ff9fca8fa194a4e597ba0da4d75 mod_groups: Only create group lists when necessary (now we can reliably detect when a user is in /any/ group, including public ones) diff -r bcfd76cc9b7d -r 6706a02df271 plugins/mod_groups.lua --- a/plugins/mod_groups.lua Mon Mar 22 14:28:25 2010 +0000 +++ b/plugins/mod_groups.lua Mon Mar 22 14:32:23 2010 +0000 @@ -7,8 +7,8 @@ -- -local groups = { default = {} }; -local members = { [false] = {} }; +local groups; +local members; local groups_file; @@ -20,7 +20,7 @@ function inject_roster_contacts(username, host, roster) module:log("warn", "Injecting group members to roster"); local bare_jid = username.."@"..host; - if not members[bare_jid] then return; end -- Not a member of any groups + if not members[bare_jid] and not members[false] then return; end -- Not a member of any groups local function import_jids_to_roster(group_name) for jid in pairs(groups[group_name]) do @@ -39,13 +39,19 @@ end -- Find groups this JID is a member of - for _, group_name in ipairs(members[bare_jid]) do - import_jids_to_roster(group_name); + if members[bare_jid] then + for _, group_name in ipairs(members[bare_jid]) do + module:log("debug", "Importing group %s", group_name); + import_jids_to_roster(group_name); + end end -- Import public groups - for _, group_name in ipairs(members[false]) do - import_jids_to_roster(group_name); + if members[false] then + for _, group_name in ipairs(members[false]) do + module:log("debug", "Importing group %s", group_name); + import_jids_to_roster(group_name); + end end end @@ -78,6 +84,9 @@ curr_group = line:match("^%s*%[(.-)%]%s*$"); if curr_group:match("^%+") then curr_group = curr_group:gsub("^%+", ""); + if not members[false] then + members[false] = {}; + end members[false][#members[false]+1] = curr_group; -- Is a public group end module:log("debug", "New group: %s", tostring(curr_group));