diff options
author | fiaxh <git@lightrise.org> | 2020-04-23 13:53:44 +0200 |
---|---|---|
committer | fiaxh <git@lightrise.org> | 2020-04-24 14:18:24 +0200 |
commit | e7bc68ad4d02b8e5f6ba26c0e917abf4d9ab2ccc (patch) | |
tree | f1ef7e1d98723774a31374bfda7ab0804f38c6d4 /xmpp-vala/src/module/xep/0313_message_archive_management.vala | |
parent | 9661116d7814059fad7bf6a6ae5c0f684aed5bda (diff) | |
download | dino-e7bc68ad4d02b8e5f6ba26c0e917abf4d9ab2ccc.tar.gz dino-e7bc68ad4d02b8e5f6ba26c0e917abf4d9ab2ccc.zip |
Handle entity hash in server features node, make ServiceDiscovery request_info/items async, add caching has_entity_feature
Diffstat (limited to 'xmpp-vala/src/module/xep/0313_message_archive_management.vala')
-rw-r--r-- | xmpp-vala/src/module/xep/0313_message_archive_management.vala | 27 |
1 files changed, 16 insertions, 11 deletions
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; + } } } |