author | Matthew Wild <mwild1@gmail.com> |
Sat, 11 Apr 2020 16:45:27 +0100 | |
changeset 10718 | 9ecad2304297 |
parent 10697 | 76bb806cdd4b |
child 11249 | 43b43e7156b8 |
permissions | -rw-r--r-- |
10697
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 |
local st = require "util.stanza"; |
10718
9ecad2304297
MUC: Switch hats to new presence APIs
Matthew Wild <mwild1@gmail.com>
parents:
10697
diff
changeset
|
2 |
local muc_util = module:require "muc/util"; |
10697
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 |
|
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 |
local xmlns_hats = "xmpp:prosody.im/protocol/hats:1"; |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
|
10718
9ecad2304297
MUC: Switch hats to new presence APIs
Matthew Wild <mwild1@gmail.com>
parents:
10697
diff
changeset
|
6 |
-- Strip any hats claimed by the client (to prevent spoofing) |
9ecad2304297
MUC: Switch hats to new presence APIs
Matthew Wild <mwild1@gmail.com>
parents:
10697
diff
changeset
|
7 |
muc_util.add_filtered_namespace(xmlns_hats); |
10697
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 |
|
10718
9ecad2304297
MUC: Switch hats to new presence APIs
Matthew Wild <mwild1@gmail.com>
parents:
10697
diff
changeset
|
9 |
module:hook("muc-build-occupant-presence", function (event) |
10697
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 |
local aff_data = event.room:get_affiliation_data(event.occupant.bare_jid); |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 |
local hats = aff_data and aff_data.hats; |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 |
if not hats then return; end |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 |
local hats_el; |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 |
for hat_id, hat_data in pairs(hats) do |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 |
if hat_data.active then |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 |
if not hats_el then |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 |
hats_el = st.stanza("hats", { xmlns = xmlns_hats }); |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 |
end |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 |
hats_el:tag("hat", { uri = hat_id, title = hat_data.title }):up(); |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 |
end |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 |
end |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 |
if not hats_el then return; end |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 |
event.stanza:add_direct_child(hats_el); |
76bb806cdd4b
MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 |
end); |