Software /
code /
prosody
Diff
plugins/mod_mam/mod_mam.lua @ 11280:e35e98541ca0
mod_mam: Allow querying by set of IDs
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 12 Jan 2021 19:00:44 +0100 |
parent | 11272:44c9cb4094bb |
child | 11281:142fb655b885 |
line wrap: on
line diff
--- a/plugins/mod_mam/mod_mam.lua Tue Jan 12 18:46:17 2021 +0100 +++ b/plugins/mod_mam/mod_mam.lua Tue Jan 12 19:00:44 2021 +0100 @@ -88,6 +88,11 @@ table.insert(query_form, { name = "after-id"; type = "text-single"; }); end +if archive.caps and archive.caps.ids then + table.insert(query_form, { name = "ids"; type = "list-multi"; }); +end + + -- Serve form module:hook("iq-get/self/"..xmlns_mam..":query", function(event) local origin, stanza = event.origin, event.stanza; @@ -107,7 +112,7 @@ get_prefs(origin.username, true); -- Search query parameters - local qwith, qstart, qend, qbefore, qafter; + local qwith, qstart, qend, qbefore, qafter, qids; local form = query:get_child("x", "jabber:x:data"); if form then local form_type, err = get_form_type(form); @@ -125,6 +130,7 @@ end qwith, qstart, qend = form["with"], form["start"], form["end"]; qbefore, qafter = form["before-id"], form["after-id"]; + qids = form["ids"]; qwith = qwith and jid_bare(qwith); -- dataforms does jidprep end @@ -164,6 +170,7 @@ with = qwith; limit = qmax == 0 and 0 or qmax + 1; before = before; after = after; + ids = qids; reverse = reverse; total = use_total or qmax == 0; }); @@ -561,7 +568,6 @@ module:hook("message/full", message_handler, 0); local advertise_extended = module:get_option_boolean("mam_advertise_extend", false); --- TODO ids -- TODO delete feature flag option module:hook("account-disco-info", function(event)