Mercurial > prosody-modules
comparison mod_default_bookmarks/mod_default_bookmarks.lua @ 4859:33208c3ae586
mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 08 Jan 2022 02:24:42 +0100 |
| parents | 727f147aac4d |
| children | 4a34ed2bb9a2 |
comparison
equal
deleted
inserted
replaced
| 4858:727f147aac4d | 4859:33208c3ae586 |
|---|---|
| 61 mod_bookmarks.publish_to_pep(session.full_jid, bookmarks); | 61 mod_bookmarks.publish_to_pep(session.full_jid, bookmarks); |
| 62 end | 62 end |
| 63 end | 63 end |
| 64 module:hook("bookmarks/empty", on_bookmarks_empty); | 64 module:hook("bookmarks/empty", on_bookmarks_empty); |
| 65 else | 65 else |
| 66 module:log("error", "Method for publishing legacy bookmarks not exposed by mod_bookmarks") | 66 local mod_pep = module:depends "pep"; |
| 67 | |
| 68 local function publish_bookmarks2(event) | |
| 69 local session = event.session; | |
| 70 local publish_options = { | |
| 71 ["persist_items"] = true; | |
| 72 ["max_items"] = "max"; | |
| 73 ["send_last_published_item"] = "never"; | |
| 74 ["access_model"] = "whitelist"; | |
| 75 } | |
| 76 if not pcall(mod_pep.check_node_config, nil, nil, publish_options) then | |
| 77 -- 0.11 or earlier not supporting max_items="max" trows an error here | |
| 78 module:log("debug", "Setting max_items=pep_max_items because 'max' is not supported in this version"); | |
| 79 publish_options["max_items"] = module:get_option_number("pep_max_items", 256); | |
| 80 end | |
| 81 local service = mod_pep.get_pep_service(session.username); | |
| 82 local bookmarks = module:get_option("default_bookmarks"); | |
| 83 local ns = event.version or "urn:xmpp:bookmarks:1"; | |
| 84 for i, bookmark in ipairs(bookmarks) do | |
| 85 local item = st.stanza("item", { xmlns = "http://jabber.org/protocol/pubsub"; id = bookmark.jid }); | |
| 86 item:tag("conference", { xmlns = ns; name = bookmark.name; autojoin = bookmark.autojoin and "true" or nil }); | |
| 87 if bookmark.nick then item:text_tag("nick", bookmarks.nick); end | |
| 88 if bookmark.password then item:text_tag("password", bookmarks.password); end | |
| 89 service:publish("urn:xmpp:bookmarks:1", session.full_jid, bookmark.jid, item, publish_options); | |
| 90 end | |
| 91 end | |
| 92 module:hook("bookmarks/empty", publish_bookmarks2); | |
| 67 end | 93 end |
| 68 else | 94 else |
| 69 local function on_private_xml_get(event) | 95 local function on_private_xml_get(event) |
| 70 local origin, stanza = event.origin, event.stanza; | 96 local origin, stanza = event.origin, event.stanza; |
| 71 local tag = stanza.tags[1].tags[1]; | 97 local tag = stanza.tags[1].tags[1]; |
