annotate mod_muc_thread_polyfill/mod_muc_thread_polyfill.lua @ 6556:7477e97a9045

mod_firewall: Apply pre-reload state before re-reading config This change makes load/reload a bit more robust. module.load() runs before module.restore() and it reads from the config and updates the state (if needed). However, after this, module.restore() could run and apply the old state again.
author Matthew Wild <mwild1@gmail.com>
date Sun, 24 May 2026 20:03:20 +0100
parents 1a08652c3fea
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6351
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
1 local st = require "util.stanza";
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
2 local jid = require "util.jid";
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
3
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
4 local archive = module:open_store("muc_log", "archive");
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
5
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
6 module:hook("muc-occupant-groupchat", function (event)
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
7 local stanza = event.stanza;
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
8 local room = event.room;
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
9
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
10 if stanza:get_child("thread") then
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
11 return;
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
12 end
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
13
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
14 local reply = stanza:get_child("reply", "urn:xmpp:reply:0");
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
15 if not reply then
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
16 return;
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
17 end
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
18
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
19 local reply_id = reply.attr.id;
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
20 if not reply_id then
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
21 return;
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
22 end
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
23
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
24 local archived = archive:get(jid.node(room.jid), reply_id);
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
25 if not archived then
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
26 return;
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
27 end
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
28
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
29 local parent_thread = archived:get_child("thread");
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
30 if parent_thread then
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
31 stanza:add_child(st.clone(parent_thread));
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
32 end
1a08652c3fea mod_muc_thread_polyfill: new module to infer threads when possible for clients that do not send them
Stephen Paul Weber <singpolyma@singpolyma.net>
parents:
diff changeset
33 end);