diff options
| author | frosty <frostinator33@airmail.cc> | 2026-10-26 10:21:57 -0400 |
|---|---|---|
| committer | frosty <frostinator33@airmail.cc> | 2026-10-26 10:21:57 -0400 |
| commit | 74aecd8b0986d07b50b7ce310d64e645b8b54e38 (patch) | |
| tree | 560e6434f183eb54cd779936f3a4c9575146a066 /libdino/src/service/entity_capabilities_storage.vala | |
| parent | 3d7e90d401da02d430a87db0ec7e1db3a6f1a68f (diff) | |
| parent | 4436001bb361ad4f9e4e05819214ecf0ea77c063 (diff) | |
Merge 'upstream/master'
Diffstat (limited to 'libdino/src/service/entity_capabilities_storage.vala')
| -rw-r--r-- | libdino/src/service/entity_capabilities_storage.vala | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/libdino/src/service/entity_capabilities_storage.vala b/libdino/src/service/entity_capabilities_storage.vala deleted file mode 100644 index c6d0bbbd..00000000 --- a/libdino/src/service/entity_capabilities_storage.vala +++ /dev/null @@ -1,71 +0,0 @@ -using Gee; -using Qlite; -using Xmpp; -using Xmpp.Xep.ServiceDiscovery; - -namespace Dino { - -public class EntityCapabilitiesStorage : Xep.EntityCapabilities.Storage, Object { - - private Database db; - private HashMap<string, Gee.List<string>> features_cache = new HashMap<string, Gee.List<string>>(); - private HashMap<string, Identity> identity_cache = new HashMap<string, Identity>(); - - public EntityCapabilitiesStorage(Database db) { - this.db = db; - } - - public void store_features(string entity, Gee.List<string> features) { - if (features_cache.has_key(entity)) return; - - foreach (string feature in features) { - db.entity_feature.insert() - .value(db.entity_feature.entity, entity) - .value(db.entity_feature.feature, feature) - .perform(); - } - } - - public void store_identities(string entity, Gee.Set<Identity> identities) { - foreach (Identity identity in identities) { - if (identity.category == Identity.CATEGORY_CLIENT) { - db.entity_identity.insert() - .value(db.entity_identity.entity, entity) - .value(db.entity_identity.category, identity.category) - .value(db.entity_identity.type, identity.type_) - .value(db.entity_identity.entity_name, identity.name) - .perform(); - return; - } - } - } - - public Gee.List<string> get_features(string entity) { - Gee.List<string>? features = features_cache[entity]; - if (features != null) { - return features; - } - - features = new ArrayList<string>(); - foreach (Row row in db.entity_feature.select({db.entity_feature.feature}).with(db.entity_feature.entity, "=", entity)) { - features.add(row[db.entity_feature.feature]); - } - features_cache[entity] = features; - return features; - } - - public Identity? get_identities(string entity) { - Identity? identity = identity_cache[entity]; - if (identity != null) { - return identity; - } - - RowOption row = db.entity_identity.select().with(db.entity_identity.entity, "=", entity).single().row(); - if (row.is_present()) { - identity = new Identity(row[db.entity_identity.category], row[db.entity_identity.type], row[db.entity_identity.entity_name]); - } - identity_cache[entity] = identity; - return identity; - } -} -} |
