view 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
line wrap: on
line source

local st = require "util.stanza";
local jid = require "util.jid";

local archive = module:open_store("muc_log", "archive");

module:hook("muc-occupant-groupchat", function (event)
	local stanza = event.stanza;
	local room   = event.room;

	if stanza:get_child("thread") then
		return;
	end

	local reply = stanza:get_child("reply", "urn:xmpp:reply:0");
	if not reply then
		return;
	end

	local reply_id = reply.attr.id;
	if not reply_id then
		return;
	end

	local archived = archive:get(jid.node(room.jid), reply_id);
	if not archived then
		return;
	end

	local parent_thread = archived:get_child("thread");
	if parent_thread then
		stanza:add_child(st.clone(parent_thread));
	end
end);