From 58452066aa0be0f836d18bc5e5c44b8b275497a9 Mon Sep 17 00:00:00 2001 From: lilia Date: Tue, 3 May 2016 23:31:29 -0700 Subject: [PATCH] Move device storage methods to outgoing message This is the only place they are called. // FREEBIE --- Gruntfile.js | 1 - js/libtextsecure.js | 82 +++++++++++++------------------ libtextsecure/outgoing_message.js | 35 ++++++++++++- libtextsecure/storage/devices.js | 30 ----------- 4 files changed, 66 insertions(+), 82 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 811a6244..966de7d5 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -45,7 +45,6 @@ module.exports = function(grunt) { 'libtextsecure/crypto.js', 'libtextsecure/storage.js', 'libtextsecure/storage/user.js', - 'libtextsecure/storage/devices.js', 'libtextsecure/storage/groups.js', 'libtextsecure/protobufs.js', 'libtextsecure/websocket-resources.js', diff --git a/js/libtextsecure.js b/js/libtextsecure.js index be36fad2..37e4de02 100644 --- a/js/libtextsecure.js +++ b/js/libtextsecure.js @@ -36810,53 +36810,6 @@ Internal.SessionLock.queueJobForNumber = function queueJobForNumber(number, runJ 'use strict'; -;(function() { - /********************** - *** Device Storage *** - **********************/ - window.textsecure = window.textsecure || {}; - window.textsecure.storage = window.textsecure.storage || {}; - - window.textsecure.storage.devices = { - getStaleDeviceIdsForNumber: function(number) { - return textsecure.storage.protocol.getDeviceIds(number).then(function(deviceIds) { - if (deviceIds.length === 0) { - return [1]; - } - var updateDevices = []; - return Promise.all(deviceIds.map(function(deviceId) { - var address = new libsignal.SignalProtocolAddress(number, deviceId); - var sessionCipher = new libsignal.SessionCipher(textsecure.storage.protocol, address); - return sessionCipher.hasOpenSession().then(function(hasSession) { - if (!hasSession) { - updateDevices.push(deviceId); - } - }); - })).then(function() { - return updateDevices; - }); - }); - }, - - removeDeviceIdsForNumber: function(number, deviceIdsToRemove) { - var promise = Promise.resolve(); - for (var j in deviceIdsToRemove) { - promise = promise.then(function() { - var encodedNumber = number + "." + deviceIdsToRemove[j]; - return textsecure.storage.protocol.removeSession(encodedNumber); - }); - } - return promise; - } - }; -})(); - -/* - * vim: ts=4:sw=4:expandtab - */ - -'use strict'; - ;(function() { /********************* *** Group Storage *** @@ -38630,7 +38583,7 @@ OutgoingMessage.prototype = { var p; if (error.code == 409) { - p = textsecure.storage.devices.removeDeviceIdsForNumber(number, error.response.extraDevices); + p = this.removeDeviceIdsForNumber(number, error.response.extraDevices); } else { p = Promise.all(error.response.staleDevices.map(function(deviceId) { return ciphers[deviceId].closeOpenSessionForDevice(); @@ -38677,8 +38630,39 @@ OutgoingMessage.prototype = { return json; }, + getStaleDeviceIdsForNumber: function(number) { + return textsecure.storage.protocol.getDeviceIds(number).then(function(deviceIds) { + if (deviceIds.length === 0) { + return [1]; + } + var updateDevices = []; + return Promise.all(deviceIds.map(function(deviceId) { + var address = new libsignal.SignalProtocolAddress(number, deviceId); + var sessionCipher = new libsignal.SessionCipher(textsecure.storage.protocol, address); + return sessionCipher.hasOpenSession().then(function(hasSession) { + if (!hasSession) { + updateDevices.push(deviceId); + } + }); + })).then(function() { + return updateDevices; + }); + }); + }, + + removeDeviceIdsForNumber: function(number, deviceIdsToRemove) { + var promise = Promise.resolve(); + for (var j in deviceIdsToRemove) { + promise = promise.then(function() { + var encodedNumber = number + "." + deviceIdsToRemove[j]; + return textsecure.storage.protocol.removeSession(encodedNumber); + }); + } + return promise; + }, + sendToNumber: function(number) { - return textsecure.storage.devices.getStaleDeviceIdsForNumber(number).then(function(updateDevices) { + return this.getStaleDeviceIdsForNumber(number).then(function(updateDevices) { return this.getKeysForNumber(number, updateDevices) .then(this.reloadDevicesAndSend(number, true)) .catch(function(error) { diff --git a/libtextsecure/outgoing_message.js b/libtextsecure/outgoing_message.js index 979832ac..784c4ddf 100644 --- a/libtextsecure/outgoing_message.js +++ b/libtextsecure/outgoing_message.js @@ -109,7 +109,7 @@ OutgoingMessage.prototype = { var p; if (error.code == 409) { - p = textsecure.storage.devices.removeDeviceIdsForNumber(number, error.response.extraDevices); + p = this.removeDeviceIdsForNumber(number, error.response.extraDevices); } else { p = Promise.all(error.response.staleDevices.map(function(deviceId) { return ciphers[deviceId].closeOpenSessionForDevice(); @@ -156,8 +156,39 @@ OutgoingMessage.prototype = { return json; }, + getStaleDeviceIdsForNumber: function(number) { + return textsecure.storage.protocol.getDeviceIds(number).then(function(deviceIds) { + if (deviceIds.length === 0) { + return [1]; + } + var updateDevices = []; + return Promise.all(deviceIds.map(function(deviceId) { + var address = new libsignal.SignalProtocolAddress(number, deviceId); + var sessionCipher = new libsignal.SessionCipher(textsecure.storage.protocol, address); + return sessionCipher.hasOpenSession().then(function(hasSession) { + if (!hasSession) { + updateDevices.push(deviceId); + } + }); + })).then(function() { + return updateDevices; + }); + }); + }, + + removeDeviceIdsForNumber: function(number, deviceIdsToRemove) { + var promise = Promise.resolve(); + for (var j in deviceIdsToRemove) { + promise = promise.then(function() { + var encodedNumber = number + "." + deviceIdsToRemove[j]; + return textsecure.storage.protocol.removeSession(encodedNumber); + }); + } + return promise; + }, + sendToNumber: function(number) { - return textsecure.storage.devices.getStaleDeviceIdsForNumber(number).then(function(updateDevices) { + return this.getStaleDeviceIdsForNumber(number).then(function(updateDevices) { return this.getKeysForNumber(number, updateDevices) .then(this.reloadDevicesAndSend(number, true)) .catch(function(error) { diff --git a/libtextsecure/storage/devices.js b/libtextsecure/storage/devices.js index 9c7300c2..ebb528c6 100644 --- a/libtextsecure/storage/devices.js +++ b/libtextsecure/storage/devices.js @@ -12,35 +12,5 @@ window.textsecure.storage = window.textsecure.storage || {}; window.textsecure.storage.devices = { - getStaleDeviceIdsForNumber: function(number) { - return textsecure.storage.protocol.getDeviceIds(number).then(function(deviceIds) { - if (deviceIds.length === 0) { - return [1]; - } - var updateDevices = []; - return Promise.all(deviceIds.map(function(deviceId) { - var address = new libsignal.SignalProtocolAddress(number, deviceId); - var sessionCipher = new libsignal.SessionCipher(textsecure.storage.protocol, address); - return sessionCipher.hasOpenSession().then(function(hasSession) { - if (!hasSession) { - updateDevices.push(deviceId); - } - }); - })).then(function() { - return updateDevices; - }); - }); - }, - - removeDeviceIdsForNumber: function(number, deviceIdsToRemove) { - var promise = Promise.resolve(); - for (var j in deviceIdsToRemove) { - promise = promise.then(function() { - var encodedNumber = number + "." + deviceIdsToRemove[j]; - return textsecure.storage.protocol.removeSession(encodedNumber); - }); - } - return promise; - } }; })();