aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/xep/0313_message_archive_management.vala
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2020-04-23 13:53:44 +0200
committerfiaxh <git@lightrise.org>2020-04-24 14:18:24 +0200
commite7bc68ad4d02b8e5f6ba26c0e917abf4d9ab2ccc (patch)
treef1ef7e1d98723774a31374bfda7ab0804f38c6d4 /xmpp-vala/src/module/xep/0313_message_archive_management.vala
parent9661116d7814059fad7bf6a6ae5c0f684aed5bda (diff)
downloaddino-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.vala27
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;
+ }
}
}