Changeset

3499:a1fc677d0cc8

muc_mam_markers: store chat markers in the Group Chat archives By enabling this module, messages containing XEP-0333 Chat Markers addressed to a Group Chat, will get stored in the archive.
author marc0s <marcos.devera@quobis.com>
date Fri, 29 Mar 2019 17:04:45 +0100
parents 3498:69219097aa85
children 3500:e86315c9b5c4
files mod_muc_mam_markers/README.markdown mod_muc_mam_markers/mod_muc_mam_markers.lua
diffstat 2 files changed, 49 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_muc_mam_markers/README.markdown	Fri Mar 29 17:04:45 2019 +0100
@@ -0,0 +1,24 @@
+---
+labels:
+- 'Stage-alpha'
+summary: Save received chat markers into MUC archives'
+...
+
+Introduction
+============
+
+Chat markers (XEP-0333) specification states that markers _SHOULD_ be
+archived.  This is already happening in one to one conversations in
+the personal archives but not in Group Chats.  This module hooks the
+_muc-message-is-historic_ event to customize the `mod_muc_mam`
+behavior and have the chat markers archived.
+
+Usage
+=====
+
+First copy the module to the prosody plugins directory.
+
+Then add "muc\_mam\_markers" to your `modules\_enabled` list in your
+MUC component's definition.
+
+No configuration options are available.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_muc_mam_markers/mod_muc_mam_markers.lua	Fri Mar 29 17:04:45 2019 +0100
@@ -0,0 +1,25 @@
+-- mod_muc_mam_markers
+--
+-- Copyright (C) 2019 Marcos de Vera Piquero <marcos.devera@quobis.com>
+--
+-- This file is MIT/X11 licensed.
+--
+-- A module to make chat markers get stored in the MUC archives
+--
+
+module:depends"muc_mam"
+
+local function handle_muc_message (event)
+	local stanza = event.stanza;
+	local is_received = stanza:get_child("received", "urn:xmpp:chat-markers:0");
+	local is_displayed = stanza:get_child("displayed", "urn:xmpp:chat-markers:0");
+	local is_acked = stanza:get_child("acknowledged", "urn:xmpp:chat-markers:0");
+	if (is_received or is_displayed or is_acked) then
+		return true;
+	end
+	return nil;
+end
+
+module:hook("muc-message-is-historic", handle_muc_message);
+
+module:log("debug", "Module loaded");