Mercurial > prosody-modules
annotate mod_muc_moderation_delay/config.lib.lua @ 6167:886c985ece61
mod_lastlog2: Skip initializing internal API (and storage) in prosodyctl
Initializing storage in the global context under prosodyctl causes the
module.command to fail to execute because the storage module has already
been loaded.
Introduced in 7b722955c59b
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 08 Feb 2025 14:12:18 +0100 |
| parents | 959382fac20c |
| children |
| 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 } |
