From a9ea0e9f87e71c60bc570066525d3e3634fbdcc0 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Sun, 12 Mar 2017 02:28:23 +0100 Subject: Split OMEMO plug-in into files, various fixes --- plugins/omemo/src/pre_key_store.vala | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 plugins/omemo/src/pre_key_store.vala (limited to 'plugins/omemo/src/pre_key_store.vala') diff --git a/plugins/omemo/src/pre_key_store.vala b/plugins/omemo/src/pre_key_store.vala new file mode 100644 index 00000000..0fd78ffc --- /dev/null +++ b/plugins/omemo/src/pre_key_store.vala @@ -0,0 +1,53 @@ +using Signal; +using Qlite; + +namespace Dino.Plugins.Omemo { + +private class BackedPreKeyStore : SimplePreKeyStore { + private Database db; + private int identity_id; + + public BackedPreKeyStore(Database db, int identity_id) { + this.db = db; + this.identity_id = identity_id; + init(); + } + + private void init() { + try { + foreach (Row row in db.pre_key.select().with(db.pre_key.identity_id, "=", identity_id)) { + store_pre_key(row[db.pre_key.pre_key_id], Base64.decode(row[db.pre_key.record_base64])); + } + } catch (Error e) { + print(@"OMEMO: Error while initializing pre key store: $(e.message)\n"); + } + + pre_key_stored.connect(on_pre_key_stored); + pre_key_deleted.connect(on_pre_key_deleted); + } + + public void on_pre_key_stored(PreKeyStore.Key key) { + try { + db.pre_key.insert().or("REPLACE") + .value(db.pre_key.identity_id, identity_id) + .value(db.pre_key.pre_key_id, (int) key.key_id) + .value(db.pre_key.record_base64, Base64.encode(key.record)) + .perform(); + } catch (Error e) { + print(@"OMEMO: Error while updating pre key store: $(e.message)\n"); + } + } + + public void on_pre_key_deleted(PreKeyStore.Key key) { + try { + db.pre_key.delete() + .with(db.pre_key.identity_id, "=", identity_id) + .with(db.pre_key.pre_key_id, "=", (int) key.key_id) + .perform(); + } catch (Error e) { + print(@"OMEMO: Error while updating pre key store: $(e.message)\n"); + } + } +} + +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf