diff options
author | fiaxh <git@lightrise.org> | 2019-05-11 09:39:02 -0600 |
---|---|---|
committer | fiaxh <git@lightrise.org> | 2019-07-08 18:46:30 +0200 |
commit | 837de4063dbe398735a5b1d35bde1821c177b555 (patch) | |
tree | 81c46027a32a9ff14f2c4932260ac97d3574b848 /plugins/omemo/src/logic/signed_pre_key_store.vala | |
parent | 701175fcd3b39aff46f52627af74b4de29363058 (diff) | |
download | dino-837de4063dbe398735a5b1d35bde1821c177b555.tar.gz dino-837de4063dbe398735a5b1d35bde1821c177b555.zip |
OMEMO: Move files to fitting subdirectory
Diffstat (limited to 'plugins/omemo/src/logic/signed_pre_key_store.vala')
-rw-r--r-- | plugins/omemo/src/logic/signed_pre_key_store.vala | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/plugins/omemo/src/logic/signed_pre_key_store.vala b/plugins/omemo/src/logic/signed_pre_key_store.vala new file mode 100644 index 00000000..8ff54a93 --- /dev/null +++ b/plugins/omemo/src/logic/signed_pre_key_store.vala @@ -0,0 +1,45 @@ +using Qlite; +using Signal; + +namespace Dino.Plugins.Omemo { + +private class BackedSignedPreKeyStore : SimpleSignedPreKeyStore { + private Database db; + private int identity_id; + + public BackedSignedPreKeyStore(Database db, int identity_id) { + this.db = db; + this.identity_id = identity_id; + init(); + } + + private void init() { + try { + foreach (Row row in db.signed_pre_key.select().with(db.signed_pre_key.identity_id, "=", identity_id)) { + store_signed_pre_key(row[db.signed_pre_key.signed_pre_key_id], Base64.decode(row[db.signed_pre_key.record_base64])); + } + } catch (Error e) { + print("Error while initializing signed pre key store: %s", e.message); + } + + signed_pre_key_stored.connect(on_signed_pre_key_stored); + signed_pre_key_deleted.connect(on_signed_pre_key_deleted); + } + + public void on_signed_pre_key_stored(SignedPreKeyStore.Key key) { + db.signed_pre_key.insert().or("REPLACE") + .value(db.signed_pre_key.identity_id, identity_id) + .value(db.signed_pre_key.signed_pre_key_id, (int) key.key_id) + .value(db.signed_pre_key.record_base64, Base64.encode(key.record)) + .perform(); + } + + public void on_signed_pre_key_deleted(SignedPreKeyStore.Key key) { + db.signed_pre_key.delete() + .with(db.signed_pre_key.identity_id, "=", identity_id) + .with(db.signed_pre_key.signed_pre_key_id, "=", (int) key.key_id) + .perform(); + } +} + +} |