From f8f305efe551838c780dce4224c06bed695d8a62 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Fri, 24 Apr 2020 14:19:42 +0200 Subject: xmpp-vala: Use more async --- xmpp-vala/src/module/xep/0048_bookmarks.vala | 33 ++++++++++++---------------- 1 file changed, 14 insertions(+), 19 deletions(-) (limited to 'xmpp-vala/src/module/xep/0048_bookmarks.vala') 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 IDENTITY = new ModuleIdentity(NS_URI, "0048_bookmarks_module"); public async Set? get_conferences(XmppStream stream) { - Set ret = new HashSet(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 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 ret = new HashSet(Conference.hash_func, Conference.equals_func); + Gee.List 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 conferences) { + private async void set_conferences(XmppStream stream, Set 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? 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? conferences = yield get_conferences(stream); conferences.remove(conference_remove); - set_conferences(stream, conferences); + yield set_conferences(stream, conferences); } public override void attach(XmppStream stream) { } -- cgit v1.2.3-54-g00ecf