From 26f1aa4db5b05f344166952e5750b4571d0ced92 Mon Sep 17 00:00:00 2001 From: lilia Date: Thu, 9 Apr 2015 14:54:59 -0700 Subject: [PATCH] Async putSessionsForDevice --- js/axolotl_store.js | 4 +--- js/libtextsecure.js | 36 ++++++++++++++++-------------- libtextsecure/storage/devices.js | 38 +++++++++++++++++--------------- 3 files changed, 40 insertions(+), 38 deletions(-) diff --git a/js/axolotl_store.js b/js/axolotl_store.js index c9ab1ec39..ff1272891 100644 --- a/js/axolotl_store.js +++ b/js/axolotl_store.js @@ -177,9 +177,7 @@ putSession: function(identifier, record) { if (identifier === null || identifier === undefined) throw new Error("Tried to put session for undefined/null key"); - return new Promise(function(resolve) { - resolve(textsecure.storage.sessions.putSessionsForDevice(identifier, record)); - }); + return textsecure.storage.sessions.putSessionsForDevice(identifier, record); } }; diff --git a/js/libtextsecure.js b/js/libtextsecure.js index 4ed14167d..5c45cf9ca 100644 --- a/js/libtextsecure.js +++ b/js/libtextsecure.js @@ -38111,24 +38111,26 @@ axolotlInternal.RecipientRecord = function() { }, putSessionsForDevice: function(encodedNumber, record) { - var number = textsecure.utils.unencodeNumber(encodedNumber)[0]; - var deviceId = textsecure.utils.unencodeNumber(encodedNumber)[1]; + return Promise.resolve((function() { + var number = textsecure.utils.unencodeNumber(encodedNumber)[0]; + var deviceId = textsecure.utils.unencodeNumber(encodedNumber)[1]; - var sessions = textsecure.storage.get("sessions" + number); - if (sessions === undefined) - sessions = {}; - sessions[deviceId] = record; - textsecure.storage.put("sessions" + number, sessions); - - var device = textsecure.storage.devices.getDeviceObject(encodedNumber); - if (device === undefined) { - var identityKey = textsecure.storage.devices.getIdentityKeyForNumber(number); - device = { encodedNumber: encodedNumber, - //TODO: Remove this duplication - identityKey: identityKey - }; - } - return textsecure.storage.devices.saveDeviceObject(device); + var sessions = textsecure.storage.get("sessions" + number); + if (sessions === undefined) + sessions = {}; + sessions[deviceId] = record; + textsecure.storage.put("sessions" + number, sessions); + + var device = textsecure.storage.devices.getDeviceObject(encodedNumber); + if (device === undefined) { + var identityKey = textsecure.storage.devices.getIdentityKeyForNumber(number); + device = { encodedNumber: encodedNumber, + //TODO: Remove this duplication + identityKey: identityKey + }; + } + return textsecure.storage.devices.saveDeviceObject(device); + })()); }, // Use textsecure.storage.devices.removeIdentityKeyForNumber (which calls this) instead diff --git a/libtextsecure/storage/devices.js b/libtextsecure/storage/devices.js index 3bdaeed23..a34037c1b 100644 --- a/libtextsecure/storage/devices.js +++ b/libtextsecure/storage/devices.js @@ -40,24 +40,26 @@ }, putSessionsForDevice: function(encodedNumber, record) { - var number = textsecure.utils.unencodeNumber(encodedNumber)[0]; - var deviceId = textsecure.utils.unencodeNumber(encodedNumber)[1]; - - var sessions = textsecure.storage.get("sessions" + number); - if (sessions === undefined) - sessions = {}; - sessions[deviceId] = record; - textsecure.storage.put("sessions" + number, sessions); - - var device = textsecure.storage.devices.getDeviceObject(encodedNumber); - if (device === undefined) { - var identityKey = textsecure.storage.devices.getIdentityKeyForNumber(number); - device = { encodedNumber: encodedNumber, - //TODO: Remove this duplication - identityKey: identityKey - }; - } - return textsecure.storage.devices.saveDeviceObject(device); + return Promise.resolve((function() { + var number = textsecure.utils.unencodeNumber(encodedNumber)[0]; + var deviceId = textsecure.utils.unencodeNumber(encodedNumber)[1]; + + var sessions = textsecure.storage.get("sessions" + number); + if (sessions === undefined) + sessions = {}; + sessions[deviceId] = record; + textsecure.storage.put("sessions" + number, sessions); + + var device = textsecure.storage.devices.getDeviceObject(encodedNumber); + if (device === undefined) { + var identityKey = textsecure.storage.devices.getIdentityKeyForNumber(number); + device = { encodedNumber: encodedNumber, + //TODO: Remove this duplication + identityKey: identityKey + }; + } + return textsecure.storage.devices.saveDeviceObject(device); + })()); }, // Use textsecure.storage.devices.removeIdentityKeyForNumber (which calls this) instead