Software /
code /
prosody-modules
Annotate
mod_muc_webchat_url/mod_muc_webchat_url.lua @ 4282:281a864e7472
mod_pubsub_feeds: Don't skip publishing items after an existing one
I encountered a feed which was backwards, such that older entries were
considered first and then it would skip newer entries.
This may however run into trouble if the feed contains more items than
what's persisted in pubsub.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 30 Nov 2020 15:17:29 +0100 |
parent | 3675:776ff0875e35 |
child | 4725:dcafddc31b1c |
rev | line source |
---|---|
3672
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
1 local jid_split = require "util.jid".split; |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
2 module:depends"muc"; |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
3 |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
4 local webchat_baseurl = module:get_option_string("muc_webchat_baseurl", nil); |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
5 |
3673
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
6 local function get_default_url(room) |
3672
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
7 if not webchat_baseurl then |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
8 -- no template |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
9 return nil; |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
10 end |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
11 if room:get_hidden() or room:get_members_only() or room:get_password() then |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
12 -- not a public room |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
13 return nil; |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
14 end |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
15 return (webchat_baseurl:gsub("{(%w+)}", { |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
16 jid = room.jid, |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
17 node = select(1, jid_split(room.jid)), |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
18 host = select(2, jid_split(room.jid)), |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
19 })); |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
20 end |
3069
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
3673
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
22 local function get_webchat_url(room) |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
23 local webchat_url = room._data.webchat_url; |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
24 if webchat_url then -- explicitly configured |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
25 return webchat_url; |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
26 end |
3675
776ff0875e35
mod_muc_webchat_url: Fix default url
Kim Alvefur <zash@zash.se>
parents:
3673
diff
changeset
|
27 return get_default_url(room); |
3673
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
28 end |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
29 |
3069
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 module:hook("muc-config-form", function(event) |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 local room, form = event.room, event.form; |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 table.insert(form, { |
3672
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
33 name = "muc#roomconfig_webchat_url", |
3069
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 type = "text-single", |
3672
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
35 label = "URL where this room can be joined", |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
36 value = get_webchat_url(room), |
3069
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 }); |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 end); |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 module:hook("muc-config-submitted", function(event) |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 local room, fields, changed = event.room, event.fields, event.changed; |
3672
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
42 local new = fields["muc#roomconfig_webchat_url"]; |
3673
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
43 if new ~= get_webchat_url(room) then |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
44 if new == get_default_url(room) then |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
45 room._data.webchat_url = nil; |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
46 else |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
47 room._data.webchat_url = new; |
11ebf1da416b
mod_muc_webchat_url: Don't save templated value
Kim Alvefur <zash@zash.se>
parents:
3672
diff
changeset
|
48 end |
3069
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 if type(changed) == "table" then |
3672
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
50 changed["muc#roomconfig_webchat_url"] = true; |
3069
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 else |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
52 event.changed = true; |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
53 end |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 end |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
55 end); |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
56 |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
57 module:hook("muc-disco#info", function (event) |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
58 local room, form, formdata = event.room, event.form, event.formdata; |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
59 |
3672
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
60 local webchat_url = get_webchat_url(room); |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
61 if not webchat_url or webchat_url == "" then |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
62 return; |
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
63 end |
3069
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
64 table.insert(form, { |
3672
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
65 name = "muc#roominfo_webchat_url", |
3069
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
66 }); |
3672
b8bcea17ccd6
mod_muc_webchat_url: Advertise the URL to a webchat in disco#info
Kim Alvefur <zash@zash.se>
parents:
3546
diff
changeset
|
67 formdata["muc#roominfo_webchat_url"] = webchat_url; |
3069
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
68 end); |
e1db146984a0
mod_muc_lang: Advertises the room language
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
69 |