annotate mod_muc_moderation_delay/config.lib.lua @ 6171:fe8222112cf4

mod_conversejs: Serve base app at / This makes things slightly less awkward for the browser to figure out which URLs belong to a PWA. The app's "start URL" was previously without the '/' and therefore was not considered within the scope of the PWA. Now the canonical app URL will always have a '/'. Prosody/mod_http should take care of redirecting existing links without the trailing / to the new URL. If you have an installation at https://prosody/conversejs then it is now at https://prosody/conversejs/ (the first URL will now redirect to the second URL if you use it). The alternative would be to make the PWA scope include the parent, i.e. the whole of https://prosody/ in this case. This might get messy if other PWAs are provided by the same site or Prosody installation, however.
author Matthew Wild <mwild1@gmail.com>
date Tue, 11 Feb 2025 13:18:38 +0000
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 }