Software /
code /
prosody
Changeset
8779:11b4ae162db7
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
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 07 May 2018 22:12:22 +0200 |
parents | 8778:0364454bdd77 |
children | 8780:4cab4ee5dfcc |
files | plugins/muc/history.lib.lua |
diffstat | 1 files changed, 16 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- 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 {