Mercurial > prosody-modules
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 |
| 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); |
