# HG changeset patch # User Kim Alvefur # Date 1525723942 -7200 # Node ID 11b4ae162db7b6b29a5f6d879d58aa243a17d4ca # Parent 0364454bdd7753b73f90b67238ad5abf4c94dc52 MUC: Move condition for what gets added to history so that other modules benefit (thanks jcbrand) This helps mod_muc_mam avoid logging eg chat-state-only messages without needing to implement similar logic in many places diff -r 0364454bdd77 -r 11b4ae162db7 plugins/muc/history.lib.lua --- a/plugins/muc/history.lib.lua Wed May 02 19:29:31 2018 +0200 +++ b/plugins/muc/history.lib.lua Mon May 07 22:12:22 2018 +0200 @@ -138,28 +138,28 @@ -- add to history module:hook("muc-add-history", function(event) - local historic = event.stanza:get_child("body"); - if historic then - local room = event.room - local history = room._history; - if not history then history = {}; room._history = history; end - local stanza = st.clone(event.stanza); - stanza.attr.to = ""; - local ts = gettime(); - local stamp = datetime.datetime(ts); - stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = module.host, stamp = stamp}):up(); -- XEP-0203 - stanza:tag("x", {xmlns = "jabber:x:delay", from = module.host, stamp = datetime.legacy()}):up(); -- XEP-0091 (deprecated) - local entry = { stanza = stanza, timestamp = ts }; - table.insert(history, entry); - while #history > get_historylength(room) do table.remove(history, 1) end - end + local room = event.room + local history = room._history; + if not history then history = {}; room._history = history; end + local stanza = st.clone(event.stanza); + stanza.attr.to = ""; + local ts = gettime(); + local stamp = datetime.datetime(ts); + stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = module.host, stamp = stamp}):up(); -- XEP-0203 + stanza:tag("x", {xmlns = "jabber:x:delay", from = module.host, stamp = datetime.legacy()}):up(); -- XEP-0091 (deprecated) + local entry = { stanza = stanza, timestamp = ts }; + table.insert(history, entry); + while #history > get_historylength(room) do table.remove(history, 1) end return true; end, -1); -- Have a single muc-add-history event, so that plugins can mark it -- as handled without stopping other muc-broadcast-message handlers module:hook("muc-broadcast-message", function(event) - module:fire_event("muc-add-history", event); + local historic = event.stanza:get_child("body"); + if historic then + module:fire_event("muc-add-history", event); + end end); return {