annotate mod_muc_thread_polyfill/mod_muc_thread_polyfill.lua @ 6513:5fb466693e85

mod_storage_xmlarchive: Ensure list index files are removed using os.remove() on the list files leaves the new index files behind since util.datamanager does not know they are removed. Thanks Link Mauve
author Kim Alvefur <zash@zash.se>
date Tue, 07 Apr 2026 21:10:54 +0200
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);