diff --git a/helpers.js b/helpers.js index 7fef599eb0..19f05044c9 100644 --- a/helpers.js +++ b/helpers.js @@ -85,7 +85,7 @@ var storage = {}; storage.putEncrypted = function(key, value) { //TODO - localStorage.setItem("e" + key, getString(value)); + localStorage.setItem("e" + key, JSON.stringify(getString(value))); } storage.getEncrypted = function(key, defaultValue) { @@ -93,18 +93,18 @@ storage.getEncrypted = function(key, defaultValue) { var value = localStorage.getItem("e" + key); if (value === null) return defaultValue; - return value; + return JSON.parse(value); } storage.putUnencrypted = function(key, value) { - localStorage.setItem("u" + key, getString(value)); + localStorage.setItem("u" + key, JSON.stringify(getString(value))); } storage.getUnencrypted = function(key, defaultValue) { var value = localStorage.getItem("u" + key); if (value === null) return defaultValue; - return value; + return JSON.parse(value); } /******************************************* @@ -153,10 +153,7 @@ function generateKeys() { // Keep track of other's keys too function getDeviceObject(encodedNumber) { - var deviceObject = storage.getEncrypted("deviceObject" + encodedNumber); - if (deviceObject === undefined) - return deviceObject; - return JSON.parseJSON(deviceObject); + return storage.getEncrypted("deviceObject" + getEncodedNumber(encodedNumber)); } function getDeviceIdListFromNumber(number) { @@ -164,7 +161,7 @@ function getDeviceIdListFromNumber(number) { } function addDeviceIdForNumber(number, deviceId) { - var deviceIdList = JSON.parseJSON(getDeviceIdListFromNumber(getNumberFromString(number))); + var deviceIdList = getDeviceIdListFromNumber(getNumberFromString(number)); for (var i = 0; i < deviceIdList.length; i++) { if (deviceIdList[i] == deviceId) return; @@ -176,6 +173,8 @@ function addDeviceIdForNumber(number, deviceId) { // throws "Identity key mismatch" function saveDeviceObject(deviceObject) { var existing = getDeviceObject(deviceObject.encodedNumber); + if (existing === undefined) + existing = {encodedNumber: getEncodedNumber(deviceObject.encodedNumber)}; for (key in deviceObject) { if (key == "encodedNumber") continue; @@ -185,7 +184,7 @@ function saveDeviceObject(deviceObject) { existing[key] = deviceObject[key]; } - storage.putEncrypted("deviceObject", JSON.encode(existing)); + storage.putEncrypted("deviceObject", existing); addDeviceIdForNumber(deviceObject.encodedNumber, getDeviceId(deviceObject.encodedNumber)); } @@ -246,7 +245,7 @@ var URL_CALLS = {}; URL_CALLS['devices'] = "/v1/devices"; URL_CALLS['keys'] = "/v1/keys"; URL_CALLS['push'] = "/v1/messagesocket"; -URL_CALLS['messages'] = "/v1/messages"; +URL_CALLS['messages'] = "/v1/messages/"; /** * REQUIRED PARAMS: @@ -292,6 +291,7 @@ function doAjax(param) { }); } +// message_callback(decoded_protobuf) (use decodeMessage(proto)) function subscribeToPush(message_callback) { var user = storage.getUnencrypted("number_id"); var password = storage.getEncrypted("password"); @@ -417,5 +417,6 @@ function sendMessageToNumbers(numbers, message, success_callback, error_callback function requestIdentityPrivKeyFromMasterDevice(number, identityKey) { - sendMessage(number, {message: "Identity Key request"}, function() {}, function() {});//TODO + sendMessageToDevices([getDeviceObject(getNumberFromString(number)) + ".1"], + {message: "Identity Key request"}, function() {}, function() {});//TODO } diff --git a/options.html b/options.html index b12d41c20e..5a1613aeb5 100644 --- a/options.html +++ b/options.html @@ -13,15 +13,22 @@ + + + + + + + diff --git a/options.js b/options.js index 50e28385be..98ffba3db9 100644 --- a/options.js +++ b/options.js @@ -35,30 +35,32 @@ $('#init-go').click(function() { $('#verify3done').html(''); $('#verify').show(); - doAjax({call: 'devices', httpType: 'PUT', urlParameters: '/' + $('#code').val(), success_callback: function(response) { - $('#verify1done').html('done'); - var keys = generateKeys(); - $('#verify2done').html('done'); + doAjax({call: 'devices', httpType: 'PUT', urlParameters: '/' + $('#code').val(), user: number, password: password, + jsonData: {signalingKey: btoa(getString(signaling_key)), supportsSms: false, fetchesMessages: true}, + success_callback: function(response) { var number_id = number + "." + response; - - storage.putUnencrypted("number_id", number_id); storage.putEncrypted("password", password); storage.putEncrypted('signaling_key', signaling_key); + storage.putUnencrypted("number_id", number_id); + $('#verify1done').html('done'); - doAjax({call: 'keys', httpType: 'PUT', do_auth: true, jsonData: keys, - success_callback: function(response) { + getKeysForNumber(number, function(identityKey) { + subscribeToPush(function(message) { + //TODO receive spuhared identity key + $('#verify2done').html('done'); + var keys = generateKeys(); $('#verify3done').html('done'); - getKeysForNumber(number, function(identityKey) { - get - $('#complete-number').html(number); - $('#verify').hide(); - $('#setup-complete').show(); - }, error_callback(error_msg) { - alert(error_msg); //TODO + doAjax({call: 'keys', httpType: 'PUT', do_auth: true, jsonData: keys, + success_callback: function(response) { + $('#verify4done').html('done'); + }, error_callback: function(code) { + alert(code); //TODO + } }); - }, error_callback: function(code) { - alert(code); //TODO - } + }); + requestIdentityPrivKeyFromMasterDevice(number); + }, function(error_msg) { + alert(error_msg); //TODO }); }, error_callback: function(code) { var error; @@ -74,8 +76,7 @@ $('#init-go').click(function() { console.log("Got error code " + code); } alert(error); //TODO - }, user: number, password: password, - jsonData: {signalingKey: btoa(getString(signaling_key)), supportsSms: false, fetchesMessages: true} + } }); } }); diff --git a/popup.html b/popup.html index 7d9f272f56..52cb756d64 100644 --- a/popup.html +++ b/popup.html @@ -3,22 +3,22 @@ -Inbox -Send -
+ Inbox + Send +
+ +
+ -
- - - - - - - - - - - - + + + + + + + + + +