# HG changeset patch # User tmolitor # Date 1503089788 -7200 # Node ID d3a2f4bdaf0931ede1b6bdf3de94fa18386f6ee1 # Parent b62cec32680e0888a5db400fe07ee2d27f4455df mod_csi_battery_saver: Add config option for better muc handling diff -r b62cec32680e -r d3a2f4bdaf09 mod_csi_battery_saver/README.markdown --- a/mod_csi_battery_saver/README.markdown Fri Aug 18 01:49:16 2017 +0200 +++ b/mod_csi_battery_saver/README.markdown Fri Aug 18 22:56:28 2017 +0200 @@ -30,4 +30,12 @@ The internal stanza buffer of this module is hardcoded to 100 stanzas. +Configuration +============= + + Option Default Description + ---------------------------------- ---------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + `csi_battery_saver_filter_muc` false Controls whether all muc messages having a body should be considered as important (false) or only such containing the user's room nic (true). Warning: you should only set this to true if your users can live with muc messages being delayed several minutes. + + [f70c02c14161]: //hg.prosody.im/prosody-modules/raw-file/f70c02c14161/mod_smacks/mod_smacks.lua \ No newline at end of file diff -r b62cec32680e -r d3a2f4bdaf09 mod_csi_battery_saver/mod_csi_battery_saver.lua --- a/mod_csi_battery_saver/mod_csi_battery_saver.lua Fri Aug 18 01:49:16 2017 +0200 +++ b/mod_csi_battery_saver/mod_csi_battery_saver.lua Fri Aug 18 22:56:28 2017 +0200 @@ -16,6 +16,9 @@ -- a log id for this module instance local id = s_sub(require "util.hashes".sha256(datetime.datetime(), true), 1, 4); +local filter_muc = module:get_option_boolean("csi_battery_saver_filter_muc", false); + + -- Patched version of util.stanza:find() that supports giving stanza names -- without their namespace, allowing for every namespace. local function find(self, path) @@ -133,13 +136,18 @@ local body = stanza:get_child_text("body"); if st_type == "groupchat" then if stanza:get_child_text("subject") then return true; end - if not body then return false; end - if body:find(session.username, 1, true) then return true; end - local rooms = session.rooms_joined; - if not rooms then return false; end - local room_nick = rooms[jid.bare(stanza_direction == "in" and stanza.attr.from or stanza.attr.to)]; - if room_nick and body:find(room_nick, 1, true) then return true; end - return false; + if body == nil or body == "" then return false; end + -- body contains text, let's see if we want to process it further + if filter_muc then + if body:find(session.username, 1, true) then return true; end + local rooms = session.rooms_joined; + if not rooms then return false; end + local room_nick = rooms[jid.bare(stanza_direction == "in" and stanza.attr.from or stanza.attr.to)]; + if room_nick and body:find(room_nick, 1, true) then return true; end + return false; + else + return true; + end end return body ~= nil and body ~= ""; end