annotate mod_muc_moderation_delay/config.lib.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 959382fac20c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5938
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
1 -- SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
2 -- SPDX-License-Identifier: AGPL-3.0-only
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
3
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
4 -- Getter/Setter
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
5 local function get_moderation_delay(room)
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
6 return room._data.moderation_delay or nil;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
7 end
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
8
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
9 local function set_moderation_delay(room, delay)
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
10 if delay == 0 then
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
11 delay = nil;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
12 end
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
13 if delay ~= nil then
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
14 delay = assert(tonumber(delay), "Moderation delay is not a valid number");
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
15 if delay < 0 then
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
16 delay = nil;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
17 end
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
18 end
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
19
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
20 if get_moderation_delay(room) == delay then return false; end
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
21
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
22 room._data.moderation_delay = delay;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
23 return true;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
24 end
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
25
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
26 -- Discovering support
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
27 local function add_disco_form(event)
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
28 table.insert(event.form, {
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
29 name = "muc#roominfo_moderation_delay";
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
30 value = "";
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
31 });
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
32 event.formdata["muc#roominfo_moderation_delay"] = get_moderation_delay(event.room);
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
33 end
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
34
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
35
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
36 -- Config form declaration
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
37 local function add_form_option(event)
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
38 table.insert(event.form, {
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
39 name = "muc#roomconfig_moderation_delay";
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
40 type = "text-single";
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
41 datatype = "xs:integer";
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
42 range_min = 0;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
43 range_max = 60; -- do not allow too big values, it does not make sense.
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
44 label = "Moderation delay (0=disabled, any positive integer= messages will be delayed for X seconds for non-moderator participants.)";
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
45 -- desc = "";
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
46 value = get_moderation_delay(event.room);
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
47 });
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
48 end
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
49
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
50 local function config_submitted(event)
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
51 set_moderation_delay(event.room, event.value);
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
52 -- no need to 104 status, this feature is invisible for regular participants.
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
53 end
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
54
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
55 return {
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
56 set_moderation_delay = set_moderation_delay;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
57 get_moderation_delay = get_moderation_delay;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
58 add_disco_form = add_disco_form;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
59 add_form_option = add_form_option;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
60 config_submitted = config_submitted;
959382fac20c mod_muc_moderation_delay: first commit to prosody-modules.
John Livingston <git@john-livingston.fr>
parents:
diff changeset
61 }