diff --git a/js/app.js b/js/app.js index ae8d2cda3..f93bf2ac1 100644 --- a/js/app.js +++ b/js/app.js @@ -2,16 +2,17 @@ var copay = require('copay'); var _ = require('lodash'); -var config = defaultConfig; var LS = require('../js/plugins/LocalStorage'); var ls = new LS(); -var localConfig; -var defaults = JSON.parse(JSON.stringify(defaultConfig)); - +// TODO move this to configService ! +var config = copay.defaultConfig; ls.getItem('config', function(err, data) { + var localConfig; + try { localConfig = JSON.parse(data); + } catch(e) {}; if (localConfig) { var cmv = copay.version.split('.')[1]; var lmv = localConfig.version ? localConfig.version.split('.')[1] : '-1'; @@ -40,6 +41,7 @@ var modules = [ var copayApp = window.copayApp = angular.module('copayApp', modules); +var defaults = JSON.parse(JSON.stringify(copay.defaultConfig)); copayApp.value('defaults', defaults); copayApp.config(function($sceDelegateProvider) { diff --git a/js/controllers/createProfile.js b/js/controllers/createProfile.js index 6e4981f3d..8d35c8d48 100644 --- a/js/controllers/createProfile.js +++ b/js/controllers/createProfile.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, $timeout, notification, pluginManager, identityService, pinService, isMobile) { +angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, $timeout, notification, pluginManager, identityService, pinService, isMobile, configService) { var _credentials, _firstpin; @@ -50,7 +50,6 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun }); }; - $scope.selectStorage = function (storage) { $scope.useLocalstorage = storage == 'local'; $timeout(function() { @@ -58,16 +57,10 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun }, 1); }; - $scope.setStorage = function(useLocalstorage) { - console.log('[createProfile.js.53:useLocalstorage:]', useLocalstorage); //TODO + $scope.goToEmail = function() { console.log('[createProfile.js.53:useLocalstorage:]', $scope.useLocalstorage); //TODO - //settingsService.save({...}) $scope.createStep = 'email'; - $scope.useEmail = !useLocalstorage; - $scope.useLocalstorage = useLocalstorage; - $timeout(function() { - $scope.$digest(); - }, 1); + $scope.useEmail = !$scope.useLocalstorage; }; $scope.setEmailOrUsername = function(form) { @@ -97,14 +90,12 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun }); }; - $scope.createProfile = function(form) { - $rootScope.hideNavigation = false; - if (form && form.$invalid) { - $scope.error = 'Please enter the required fields'; - return; - } - $scope.loading = true; - identityService.create( $scope.userOrEmail, form.password.$modelValue, function(err) { + + $scope._doCreateProfile = function(emailOrUsername, password) { + preconditions.checkArgument(_.isString(emailOrUsername)); + preconditions.checkArgument(_.isString(password)); + + identityService.create(emailOrUsername, password, function(err) { $scope.loading = false; if (err) { @@ -141,5 +132,32 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun } } }); - } + }; + + + $scope.createProfile = function(form) { + $rootScope.hideNavigation = false; + if (form && form.$invalid) { + $scope.error = 'Please enter the required fields'; + return; + } + $scope.loading = true; + + var plugins = config.plugins; + + plugins.EncryptedLocalStorage = false; + plugins.EncryptedInsightStorage = false; + + var pluginName = $scope.useLocalstorage ? 'EncryptedLocalStorage' : 'EncryptedInsightStorage'; + + plugins[pluginName] = true; + console.log('[createProfile.js.102:plugins:]', plugins); //TODO + + configService.set({ + plugins: plugins + }, function() { + $scope._doCreateProfile($scope.userOrEmail, form.password.$modelValue); + }); + }; + }); diff --git a/js/controllers/homeWallet.js b/js/controllers/homeWallet.js index 400cc5329..55c4a00bb 100644 --- a/js/controllers/homeWallet.js +++ b/js/controllers/homeWallet.js @@ -64,8 +64,10 @@ angular.module('copayApp.controllers').controller('HomeWalletController', functi $scope.$on("$destroy", function() { var w = $rootScope.wallet; - removeWatch(); - w.removeListener('txProposalEvent', _updateTxs); + if (w) { + removeWatch(); + w.removeListener('txProposalEvent', _updateTxs); + }; }); $scope.setAlternativeAmount = function(w, tx, cb) { diff --git a/js/services/configService.js b/js/services/configService.js index 2d0fef102..4278e5215 100644 --- a/js/services/configService.js +++ b/js/services/configService.js @@ -4,20 +4,31 @@ angular.module('copayApp.services').factory('configService', function(localstora var root = {}; root.set = function(opts, cb) { - copay.logger.setLevel(opts.logLevel); - localstorageService.getItem('config', function(err, oldOps) { - _.defaults(opts, JSON.parse(oldOps)); + if (opts.logLevel) + copay.logger.setLevel(opts.logLevel); + + localstorageService.getItem('config', function(err, oldOpsStr) { + + var oldOpts = {}; + + try { + oldOpts = JSON.parse(oldOpsStr); + } catch (e) {}; + + var newOpts = {}; + _.extend(newOpts, copay.defaultConfig, oldOpts, opts); // TODO remove this gloval variable. - config = opts; - localstorageService.setItem('config', JSON.stringify(opts), cb); + config = newOpts; + + localstorageService.setItem('config', JSON.stringify(newOpts), cb); }); }; root.reset = function(cb) { config = copay.defaultConfig; - localstorageService.removeItem('config',cb); + localstorageService.removeItem('config', cb); }; return root; diff --git a/views/createProfile.html b/views/createProfile.html index 3b7024348..82bdd0cde 100644 --- a/views/createProfile.html +++ b/views/createProfile.html @@ -59,7 +59,6 @@ Email address confirmation needed -
In this Device
@@ -82,17 +81,11 @@
- - - - - -