diff mod_http_muc_log/mod_http_muc_log.lua @ 4592:38f501dca618

mod_http_muc_log: Find edit relations using XEP-0308
author Kim Alvefur <zash@zash.se>
date Tue, 15 Jun 2021 17:35:56 +0200
parents 3145823992cb
children a2cf3b69a3d6
line wrap: on
line diff
--- a/mod_http_muc_log/mod_http_muc_log.lua	Tue Jun 15 17:22:33 2021 +0200
+++ b/mod_http_muc_log/mod_http_muc_log.lua	Tue Jun 15 17:35:56 2021 +0200
@@ -330,8 +330,28 @@
 		local nick = select(3, jid_split(item.attr.from));
 		local oob = use_oob and item:get_child("x", "jabber:x:oob");
 
+		local edit = item:find("{urn:xmpp:message-correct:0}replace/@id");
+		if edit then
+			local found = false;
+			for n = i-1, 1, -1 do
+				if not logs[n] then
+					break; -- Probably reached logs[0]
+				elseif logs[n].id == edit and nick == logs[n].nick then
+					found = true;
+					logs[n].edited = key;
+					edit = logs[n].key;
+					break;
+				end
+			end
+			if not found then
+				-- Ignore unresolved edit.
+				edit = nil;
+			end
+		end
+
 		if body or verb or oob then
 			local line = {
+				id = item.attr.id,
 				key = key;
 				datetime = datetime.datetime(when);
 				time = datetime.time(when);
@@ -341,6 +361,7 @@
 				nick = nick;
 				st_name = item.name;
 				st_type = item.attr.type;
+				edit = edit;
 			};
 			if oob then
 				line.oob = {