From 71fb916100336b33ab10afccd17e546df3e74b1e Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Tue, 15 May 2018 16:42:06 -0500 Subject: [PATCH] Passcode manager auth params --- app/assets/javascripts/app/services/passcodeManager.js | 7 +++++++ app/assets/javascripts/app/services/syncManager.js | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/app/services/passcodeManager.js b/app/assets/javascripts/app/services/passcodeManager.js index a438aa4bb..e359cebc4 100644 --- a/app/assets/javascripts/app/services/passcodeManager.js +++ b/app/assets/javascripts/app/services/passcodeManager.js @@ -26,6 +26,10 @@ angular.module('app') return JSON.parse(storageManager.getItem("offlineParams", StorageManager.Fixed)); } + this.protocolVersion = function() { + return this._authParams && this._authParams.version; + } + this.unlock = function(passcode, callback) { var params = this.passcodeAuthParams(); SFJS.crypto.computeEncryptionKeysForUser(passcode, params, (keys) => { @@ -35,6 +39,7 @@ angular.module('app') } this._keys = keys; + this._authParams = params; this.decryptLocalStorage(keys, params); this._locked = false; callback(true); @@ -48,10 +53,12 @@ angular.module('app') authParams.hash = keys.pw; this._keys = keys; this._hasPasscode = true; + this._authParams = authParams; // Encrypting will initially clear localStorage this.encryptLocalStorage(keys, authParams); + // After it's cleared, it's safe to write to it storageManager.setItem("offlineParams", JSON.stringify(authParams), StorageManager.Fixed); callback(true); diff --git a/app/assets/javascripts/app/services/syncManager.js b/app/assets/javascripts/app/services/syncManager.js index 18c515e07..565dea713 100644 --- a/app/assets/javascripts/app/services/syncManager.js +++ b/app/assets/javascripts/app/services/syncManager.js @@ -26,8 +26,8 @@ class SyncManager { callback && callback(); return; } - // Use null to use the latest protocol version if offline - var version = this.authManager.offline() ? null : this.authManager.protocolVersion(); + + var version = this.authManager.offline() ? this.passcodeManager.protocolVersion() : this.authManager.protocolVersion(); var keys = this.authManager.offline() ? this.passcodeManager.keys() : this.authManager.keys(); var params = items.map(function(item) { var itemParams = new ItemParams(item, keys, version);