aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/xep/0030_service_discovery/flag.vala
diff options
context:
space:
mode:
authorfiaxh <git@mx.ax.lt>2017-03-31 01:17:01 +0200
committerfiaxh <git@mx.ax.lt>2017-03-31 16:39:28 +0200
commit22adbd38dca0868f0e10754314a3859bba0a7d87 (patch)
tree44ecf9cf8af6aef78030dade95aecb1de2b99873 /xmpp-vala/src/module/xep/0030_service_discovery/flag.vala
parent7d2f995a097086be01426cc79c9c801dabaf9e3b (diff)
downloaddino-22adbd38dca0868f0e10754314a3859bba0a7d87.tar.gz
dino-22adbd38dca0868f0e10754314a3859bba0a7d87.zip
Handle MUC private messages
Diffstat (limited to 'xmpp-vala/src/module/xep/0030_service_discovery/flag.vala')
-rw-r--r--xmpp-vala/src/module/xep/0030_service_discovery/flag.vala23
1 files changed, 21 insertions, 2 deletions
diff --git a/xmpp-vala/src/module/xep/0030_service_discovery/flag.vala b/xmpp-vala/src/module/xep/0030_service_discovery/flag.vala
index 0f82f498..7c49fc30 100644
--- a/xmpp-vala/src/module/xep/0030_service_discovery/flag.vala
+++ b/xmpp-vala/src/module/xep/0030_service_discovery/flag.vala
@@ -7,15 +7,34 @@ namespace Xmpp.Xep.ServiceDiscovery {
public class Flag : XmppStreamFlag {
public static FlagIdentity<Flag> IDENTITY = new FlagIdentity<Flag>(NS_URI, "service_discovery");
- private HashMap<string, ArrayList<string>> entity_features = new HashMap<string, ArrayList<string>>();
+ private HashMap<string, ArrayList<string>?> entity_features = new HashMap<string, ArrayList<string>?>();
+ private HashMap<string, ArrayList<Identity>?> entity_identities = new HashMap<string, ArrayList<Identity>?>();
public ArrayList<string> features = new ArrayList<string>();
+ public ArrayList<Identity>? get_entity_categories(string jid) {
+ return entity_identities.has_key(jid) ? entity_identities[jid] : null; // TODO isnt this default for hashmap
+ }
+
+ public bool? has_entity_identity(string jid, string category, string type) {
+ if (!entity_identities.has_key(jid)) return null;
+ if (entity_identities[jid] == null) return false;
+ foreach (Identity identity in entity_identities[jid]) {
+ if (identity.category == category && identity.type_ == type) return true;
+ }
+ return false;
+ }
+
public bool? has_entity_feature(string jid, string feature) {
if (!entity_features.has_key(jid)) return null;
+ if (entity_features[jid] == null) return false;
return entity_features[jid].contains(feature);
}
- public void set_entitiy_features(string jid, ArrayList<string> features) {
+ public void set_entity_identities(string jid, ArrayList<Identity>? identities) {
+ entity_identities[jid] = identities;
+ }
+
+ public void set_entity_features(string jid, ArrayList<string>? features) {
entity_features[jid] = features;
}