aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/xep/0048_bookmarks.vala
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp-vala/src/module/xep/0048_bookmarks.vala')
-rw-r--r--xmpp-vala/src/module/xep/0048_bookmarks.vala33
1 files changed, 14 insertions, 19 deletions
diff --git a/xmpp-vala/src/module/xep/0048_bookmarks.vala b/xmpp-vala/src/module/xep/0048_bookmarks.vala
index daacf1a4..90a0c2e7 100644
--- a/xmpp-vala/src/module/xep/0048_bookmarks.vala
+++ b/xmpp-vala/src/module/xep/0048_bookmarks.vala
@@ -7,25 +7,21 @@ public class Module : BookmarksProvider, XmppStreamModule {
public static ModuleIdentity<Module> IDENTITY = new ModuleIdentity<Module>(NS_URI, "0048_bookmarks_module");
public async Set<Conference>? get_conferences(XmppStream stream) {
- Set<Conference> ret = new HashSet<Conference>(Conference.hash_func, Conference.equals_func);
StanzaNode get_node = new StanzaNode.build("storage", NS_URI).add_self_xmlns();
- stream.get_module(PrivateXmlStorage.Module.IDENTITY).retrieve(stream, get_node, (stream, node) => {
- if (node != null) {
- Gee.List<StanzaNode> conferences_node = node.get_subnode("storage", NS_URI).get_subnodes("conference", NS_URI);
- foreach (StanzaNode conference_node in conferences_node) {
- Conference? conference = Bookmarks1Conference.create_from_stanza_node(conference_node);
- ret.add(conference);
- }
- }
- Idle.add(get_conferences.callback);
- });
- yield;
+ StanzaNode? result_node = yield stream.get_module(PrivateXmlStorage.Module.IDENTITY).retrieve(stream, get_node);
+ if (result_node == null) return null;
+ Set<Conference> ret = new HashSet<Conference>(Conference.hash_func, Conference.equals_func);
+ Gee.List<StanzaNode> conferences_node = result_node.get_subnode("storage", NS_URI).get_subnodes("conference", NS_URI);
+ foreach (StanzaNode conference_node in conferences_node) {
+ Conference? conference = Bookmarks1Conference.create_from_stanza_node(conference_node);
+ ret.add(conference);
+ }
return ret;
}
- private void set_conferences(XmppStream stream, Set<Conference> conferences) {
+ private async void set_conferences(XmppStream stream, Set<Conference> conferences) {
StanzaNode storage_node = (new StanzaNode.build("storage", NS_URI)).add_self_xmlns();
foreach (Conference conference in conferences) {
Bookmarks1Conference? bookmarks1conference = conference as Bookmarks1Conference;
@@ -46,15 +42,14 @@ public class Module : BookmarksProvider, XmppStreamModule {
storage_node.put_node(conference_node);
}
}
- stream.get_module(PrivateXmlStorage.Module.IDENTITY).store(stream, storage_node, (stream) => {
- stream.get_module(Module.IDENTITY).received_conferences(stream, conferences);
- });
+ yield stream.get_module(PrivateXmlStorage.Module.IDENTITY).store(stream, storage_node);
+ stream.get_module(Module.IDENTITY).received_conferences(stream, conferences);
}
public async void add_conference(XmppStream stream, Conference conference) {
Set<Conference>? conferences = yield get_conferences(stream);
conferences.add(conference);
- set_conferences(stream, conferences);
+ yield set_conferences(stream, conferences);
}
public async void replace_conference(XmppStream stream, Jid muc_jid, Conference modified_conference) {
@@ -67,13 +62,13 @@ public class Module : BookmarksProvider, XmppStreamModule {
conference.password = modified_conference.password;
}
}
- set_conferences(stream, conferences);
+ yield set_conferences(stream, conferences);
}
public async void remove_conference(XmppStream stream, Conference conference_remove) {
Set<Conference>? conferences = yield get_conferences(stream);
conferences.remove(conference_remove);
- set_conferences(stream, conferences);
+ yield set_conferences(stream, conferences);
}
public override void attach(XmppStream stream) { }