Mercurial > prosody-modules
changeset 2746:d3a2f4bdaf09
mod_csi_battery_saver: Add config option for better muc handling
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Fri, 18 Aug 2017 22:56:28 +0200 |
parents | b62cec32680e |
children | a688b31295ea |
files | mod_csi_battery_saver/README.markdown mod_csi_battery_saver/mod_csi_battery_saver.lua |
diffstat | 2 files changed, 23 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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