From fa6d49e3bf664e7862548223df9b0882c11eefb1 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Tue, 11 Jan 2022 20:37:30 +0100 Subject: Update PEP native bookmarks to :1 version, fixes --- xmpp-vala/src/module/xep/0402_bookmarks2.vala | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'xmpp-vala/src/module/xep/0402_bookmarks2.vala') diff --git a/xmpp-vala/src/module/xep/0402_bookmarks2.vala b/xmpp-vala/src/module/xep/0402_bookmarks2.vala index 9572cc63..cafe1435 100644 --- a/xmpp-vala/src/module/xep/0402_bookmarks2.vala +++ b/xmpp-vala/src/module/xep/0402_bookmarks2.vala @@ -2,7 +2,8 @@ using Gee; namespace Xmpp.Xep.Bookmarks2 { -private const string NS_URI = "urn:xmpp:bookmarks:0"; +public const string NS_URI = "urn:xmpp:bookmarks:1"; +public const string NS_URI_COMPAT = NS_URI + "#compat"; public class Module : BookmarksProvider, XmppStreamModule { public static ModuleIdentity IDENTITY = new ModuleIdentity(NS_URI, "0402_bookmarks2"); @@ -35,14 +36,23 @@ public class Module : BookmarksProvider, XmppStreamModule { public async void add_conference(XmppStream stream, Conference conference) { StanzaNode conference_node = new StanzaNode.build("conference", NS_URI).add_self_xmlns() - .put_attribute("autojoin", conference.autojoin ? "true" : "false"); + .put_attribute("autojoin", conference.autojoin.to_string()); if (conference.name != null) { conference_node.put_attribute("name", conference.name); } if (conference.nick != null) { conference_node.put_node((new StanzaNode.build("nick", NS_URI)).put_node(new StanzaNode.text(conference.nick))); } - yield stream.get_module(Pubsub.Module.IDENTITY).publish(stream, stream.get_flag(Bind.Flag.IDENTITY).my_jid.bare_jid, NS_URI, conference.jid.to_string(), conference_node, Xmpp.Xep.Pubsub.ACCESS_MODEL_WHITELIST); + if (conference.password != null) { + conference_node.put_node((new StanzaNode.build("password", NS_URI)).put_node(new StanzaNode.text(conference.password))); + } + var publish_options = new Pubsub.PublishOptions() + .set_persist_items(true) + .set_max_items("max") + .set_send_last_published_item("never") + .set_access_model("whitelist"); + + yield stream.get_module(Pubsub.Module.IDENTITY).publish(stream, stream.get_flag(Bind.Flag.IDENTITY).my_jid.bare_jid, NS_URI, conference.jid.to_string(), conference_node, publish_options); } public async void replace_conference(XmppStream stream, Jid muc_jid, Conference modified_conference) { @@ -92,7 +102,7 @@ public class Module : BookmarksProvider, XmppStreamModule { if (conference_node.name != "conference" || conference_node.ns_uri != NS_URI) return null; conference.name = conference_node.get_attribute("name", NS_URI); - conference.autojoin = conference_node.get_attribute("autojoin", NS_URI) == "true"; + conference.autojoin = conference_node.get_attribute_bool("autojoin", false, NS_URI); conference.nick = conference_node.get_deep_string_content("nick"); return conference; } -- cgit v1.2.3-70-g09d2