From c9a4b55656cbdb49287a08029ccb96bbed6228e5 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Mon, 7 May 2018 22:12:22 +0200 Subject: 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 --- plugins/muc/history.lib.lua | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'plugins') diff --git a/plugins/muc/history.lib.lua b/plugins/muc/history.lib.lua index e467ae32..b816bca7 100644 --- a/plugins/muc/history.lib.lua +++ b/plugins/muc/history.lib.lua @@ -138,28 +138,28 @@ end, 50); -- Before subject(20) -- 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 { -- cgit v1.2.3