diff --git a/src/js/controllers/preferences.js b/src/js/controllers/preferences.js index f02cac712..c9dceb978 100644 --- a/src/js/controllers/preferences.js +++ b/src/js/controllers/preferences.js @@ -48,7 +48,7 @@ angular.module('copayApp.controllers').controller('preferencesController', fc.setPrivateKeyEncryption(password); fc.lock(); - profileService.updateCredentials(fc.export(), function() { + profileService.updateCredentials(JSON.parse(fc.export()), function() { $log.debug('Wallet encrypted'); return cb(); }); @@ -62,7 +62,7 @@ angular.module('copayApp.controllers').controller('preferencesController', } catch (e) { return cb(e); } - profileService.updateCredentials(fc.export(), function() { + profileService.updateCredentials(JSON.parse(fc.export()), function() { $log.debug('Wallet encryption disabled'); return cb(); }); diff --git a/src/js/models/profile.js b/src/js/models/profile.js index aea506864..a2b70fac4 100644 --- a/src/js/models/profile.js +++ b/src/js/models/profile.js @@ -74,6 +74,9 @@ Profile.prototype.setChecked = function(ua, walletId) { Profile.prototype.addWallet = function(credentials) { + if (!credentials.walletId) + throw 'credentials must have .walletId'; + if (this.hasWallet(credentials.walletId)) return false; @@ -83,14 +86,20 @@ Profile.prototype.addWallet = function(credentials) { }; Profile.prototype.updateWallet = function(credentials) { + if (!credentials.walletId) + throw 'credentials must have .walletId'; + if (!this.hasWallet(credentials.walletId)) return false; - this.credentials = this.credentials.filter(function(c) { - return c.walletId != walletId; + this.credentials = this.credentials.map(function(c) { + if(c.walletId != credentials.walletId ) { + return c; + } else { + return credentials + } }); - this.addWallet(credentials); this.dirty = true; return true; }; diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index a484d2c67..0ccc7052f 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -669,7 +669,7 @@ angular.module('copayApp.services') root.setDisclaimerAccepted = function(cb) { root.profile.disclaimerAccepted = true; - storageService.storeProfileThrottled(root.profile, function(err) { + storageService.storeProfile(root.profile, function(err) { return cb(err); }); }; @@ -691,8 +691,8 @@ angular.module('copayApp.services') }; root.updateCredentials = function(credentials, cb) { - root.profile.updateWallet(credentials); - storageService.storeProfileThrottled(root.profile, cb); + var t = root.profile.updateWallet(credentials); + storageService.storeProfile(root.profile, cb); }; root.getClients = function() { diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index d144c26f2..62eb71f2c 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -99,8 +99,6 @@ angular.module('copayApp.services') storage.set('profile', profile.toObj(), cb); }; - root.storeProfileThrottled = lodash.throttle(root.storeProfile, 5000); - root.getProfile = function(cb) { storage.get('profile', function(err, str) { if (err || !str)