From e7bc68ad4d02b8e5f6ba26c0e917abf4d9ab2ccc Mon Sep 17 00:00:00 2001 From: fiaxh Date: Thu, 23 Apr 2020 13:53:44 +0200 Subject: Handle entity hash in server features node, make ServiceDiscovery request_info/items async, add caching has_entity_feature --- .../xep/0313_message_archive_management.vala | 27 +++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'xmpp-vala/src/module/xep/0313_message_archive_management.vala') diff --git a/xmpp-vala/src/module/xep/0313_message_archive_management.vala b/xmpp-vala/src/module/xep/0313_message_archive_management.vala index 78d0aaff..bba52702 100644 --- a/xmpp-vala/src/module/xep/0313_message_archive_management.vala +++ b/xmpp-vala/src/module/xep/0313_message_archive_management.vala @@ -108,17 +108,22 @@ public class Module : XmppStreamModule { return result_iq; } - private void query_availability(XmppStream stream) { - stream.get_module(Xep.ServiceDiscovery.Module.IDENTITY).request_info(stream, stream.get_flag(Bind.Flag.IDENTITY).my_jid.bare_jid, (stream, info_result) => { - if (info_result == null) return; - if (info_result.features.contains(NS_URI)) { - stream.add_flag(new Flag(NS_URI)); - feature_available(stream); - } else if (info_result.features.contains(NS_URI_1)) { - stream.add_flag(new Flag(NS_URI_1)); - feature_available(stream); - } - }); + private async void query_availability(XmppStream stream) { + Jid own_jid = stream.get_flag(Bind.Flag.IDENTITY).my_jid.bare_jid; + + bool ver_2_available = yield stream.get_module(ServiceDiscovery.Module.IDENTITY).has_entity_feature(stream, own_jid, NS_URI); + if (ver_2_available) { + stream.add_flag(new Flag(NS_URI)); + feature_available(stream); + return; + } + + bool ver_1_available = yield stream.get_module(ServiceDiscovery.Module.IDENTITY).has_entity_feature(stream, own_jid, NS_URI_1); + if (ver_1_available) { + stream.add_flag(new Flag(NS_URI_1)); + feature_available(stream); + return; + } } } -- cgit v1.2.3-54-g00ecf