diff --git a/src/js/controllers/create.js b/src/js/controllers/create.js index 5bccde437..617629c80 100644 --- a/src/js/controllers/create.js +++ b/src/js/controllers/create.js @@ -19,37 +19,51 @@ angular.module('copayApp.controllers').controller('createController', 12: 1, }; - $scope.init = function(tc) { + $scope.$on("$ionicView.beforeEnter", function(event, data) { $scope.formData = {}; var defaults = configService.getDefaults(); + var tc = $state.current.name == 'tabs.add.create-personal' ? 1 : defaults.wallet.totalCopayers; $scope.formData.account = 1; $scope.formData.bwsurl = defaults.bws.url; $scope.TCValues = lodash.range(2, defaults.limits.totalCopayers + 1); - $scope.formData.totalCopayers = defaults.wallet.totalCopayers; $scope.formData.derivationPath = derivationPathHelper.default; $scope.setTotalCopayers(tc); updateRCSelect(tc); - }; + resetPasswordFields(); + }); $scope.showAdvChange = function() { $scope.showAdv = !$scope.showAdv; + $scope.encrypt = null; $scope.resizeView(); }; + $scope.checkPassword = function(pw1, pw2) { + if (pw1 && pw1.length > 0) { + if (pw2 && pw2.length > 0) { + if (pw1 == pw2) $scope.result = 'correct'; + else { + $scope.formData.passwordSaved = null; + $scope.result = 'incorrect'; + } + } else + $scope.result = null; + } else + $scope.result = null; + }; + $scope.resizeView = function() { $timeout(function() { $ionicScrollDelegate.resize(); }, 10); - checkPasswordFields(); + resetPasswordFields(); }; - function checkPasswordFields() { - if (!$scope.encrypt) { - $scope.formData.passphrase = $scope.formData.createPassphrase = $scope.formData.passwordSaved = null; - $timeout(function() { - $scope.$apply(); - }); - } + function resetPasswordFields() { + $scope.formData.passphrase = $scope.formData.createPassphrase = $scope.formData.passwordSaved = $scope.formData.repeatPassword = $scope.result = null; + $timeout(function() { + $scope.$apply(); + }); }; function updateRCSelect(n) { @@ -64,7 +78,7 @@ angular.module('copayApp.controllers').controller('createController', id: 'new', label: gettextCatalog.getString('Random'), supportsTestnet: true - }, { + }, { id: 'set', label: gettextCatalog.getString('Specify Recovery Phrase...'), supportsTestnet: false @@ -112,11 +126,7 @@ angular.module('copayApp.controllers').controller('createController', updateSeedSourceSelect(tc); }; - $scope.create = function(form) { - if (form && form.$invalid) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Please enter the required fields')); - return; - } + $scope.create = function() { var opts = { name: $scope.formData.walletName, diff --git a/src/js/controllers/join.js b/src/js/controllers/join.js index fe8bb5372..60d7a39a7 100644 --- a/src/js/controllers/join.js +++ b/src/js/controllers/join.js @@ -3,57 +3,70 @@ angular.module('copayApp.controllers').controller('joinController', function($scope, $rootScope, $timeout, $state, $ionicHistory, $ionicScrollDelegate, profileService, configService, storageService, applicationService, gettextCatalog, lodash, ledger, trezor, intelTEE, derivationPathHelper, ongoingProcess, walletService, $log, $stateParams, popupService, appConfigService) { - var self = this; - var defaults = configService.getDefaults(); - $scope.bwsurl = defaults.bws.url; - $scope.derivationPath = derivationPathHelper.default; - $scope.account = 1; + $scope.$on("$ionicView.beforeEnter", function(event, data) { + var defaults = configService.getDefaults(); + $scope.formData = {}; + $scope.formData.bwsurl = defaults.bws.url; + $scope.formData.derivationPath = derivationPathHelper.default; + $scope.formData.account = 1; + $scope.formData.secret = null; + resetPasswordFields(); + updateSeedSourceSelect(); + }); $scope.showAdvChange = function() { $scope.showAdv = !$scope.showAdv; + $scope.encrypt = null; $scope.resizeView(); }; + $scope.checkPassword = function(pw1, pw2) { + if (pw1 && pw1.length > 0) { + if (pw2 && pw2.length > 0) { + if (pw1 == pw2) $scope.result = 'correct'; + else { + $scope.formData.passwordSaved = null; + $scope.result = 'incorrect'; + } + } else + $scope.result = null; + } else + $scope.result = null; + }; + $scope.resizeView = function() { $timeout(function() { $ionicScrollDelegate.resize(); }, 10); - checkPasswordFields(); + resetPasswordFields(); }; - function checkPasswordFields() { - if (!$scope.encrypt) { - $scope.passphrase = $scope.createPassphrase = $scope.passwordSaved = null; - $timeout(function() { - $scope.$apply(); - }); - } + function resetPasswordFields() { + $scope.formData.passphrase = $scope.formData.createPassphrase = $scope.formData.passwordSaved = $scope.formData.repeatPassword = $scope.result = null; + $timeout(function() { + $scope.$apply(); + }); }; - this.onQrCodeScannedJoin = function(data) { - $scope.secret = data; - if ($scope.joinForm) { - $scope.joinForm.secret.$setViewValue(data); - $scope.joinForm.secret.$render(); - } + $scope.onQrCodeScannedJoin = function(data) { + $scope.formData.secret = data; }; if ($stateParams.url) { var data = $stateParams.url; data = data.replace('copay:', ''); - this.onQrCodeScannedJoin(data); + $scope.onQrCodeScannedJoin(data); } - var updateSeedSourceSelect = function() { - self.seedOptions = [{ + function updateSeedSourceSelect() { + $scope.seedOptions = [{ id: 'new', label: gettextCatalog.getString('Random'), }, { id: 'set', label: gettextCatalog.getString('Specify Recovery Phrase...'), }]; - $scope.seedSource = self.seedOptions[0]; - + $scope.seedSource = $scope.seedOptions[0]; /* Disable Hardware Wallets @@ -62,21 +75,21 @@ angular.module('copayApp.controllers').controller('joinController', if (appConfigService.name == 'copay') { if (walletService.externalSource.ledger.supported) { - self.seedOptions.push({ + $scope.seedOptions.push({ id: walletService.externalSource.ledger.id, label: walletService.externalSource.ledger.longName }); } if (walletService.externalSource.trezor.supported) { - self.seedOptions.push({ + $scope.seedOptions.push({ id: walletService.externalSource.trezor.id, label: walletService.externalSource.trezor.longName }); } if (walletService.externalSource.intelTEE.supported) { - seedOptions.push({ + $scope.seedOptions.push({ id: walletService.externalSource.intelTEE.id, label: walletService.externalSource.intelTEE.longName }); @@ -84,37 +97,25 @@ angular.module('copayApp.controllers').controller('joinController', } }; - this.setSeedSource = function() { - self.seedSourceId = $scope.seedSource.id; - - $timeout(function() { - $rootScope.$apply(); - }); - }; - - this.join = function(form) { - if (form && form.$invalid) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Please enter the required fields')); - return; - } + $scope.join = function() { var opts = { - secret: form.secret.$modelValue, - myName: form.myName.$modelValue, - bwsurl: $scope.bwsurl + secret: $scope.formData.secret, + myName: $scope.formData.myName, + bwsurl: $scope.formData.bwsurl } - var setSeed = self.seedSourceId == 'set'; + var setSeed = $scope.seedSource.id == 'set'; if (setSeed) { - var words = form.privateKey.$modelValue; + var words = $scope.formData.privateKey; if (words.indexOf(' ') == -1 && words.indexOf('prv') == 1 && words.length > 108) { opts.extendedPrivateKey = words; } else { opts.mnemonic = words; } - opts.passphrase = form.passphrase.$modelValue; + opts.passphrase = $scope.formData.passphrase; - var pathData = derivationPathHelper.parse($scope.derivationPath); + var pathData = derivationPathHelper.parse($scope.formData.derivationPath); if (!pathData) { popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid derivation path')); return; @@ -123,7 +124,7 @@ angular.module('copayApp.controllers').controller('joinController', opts.networkName = pathData.networkName; opts.derivationStrategy = pathData.derivationStrategy; } else { - opts.passphrase = form.createPassphrase.$modelValue; + opts.passphrase = $scope.formData.createPassphrase; } opts.walletPrivKey = $scope._walletPrivKey; // Only for testing @@ -134,22 +135,22 @@ angular.module('copayApp.controllers').controller('joinController', return; } - if (self.seedSourceId == walletService.externalSource.ledger.id || self.seedSourceId == walletService.externalSource.trezor.id || self.seedSourceId == walletService.externalSource.intelTEE.id) { + if ($scope.seedSource.id == walletService.externalSource.ledger.id || $scope.seedSource.id == walletService.externalSource.trezor.id || $scope.seedSource.id == walletService.externalSource.intelTEE.id) { var account = $scope.account; if (!account || account < 1) { popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid account number')); return; } - if (self.seedSourceId == walletService.externalSource.trezor.id || self.seedSourceId == walletService.externalSource.intelTEE.id) + if ($scope.seedSource.id == walletService.externalSource.trezor.id || $scope.seedSource.id == walletService.externalSource.intelTEE.id) account = account - 1; opts.account = account; opts.isMultisig = true; - ongoingProcess.set('connecting' + self.seedSourceId, true); + ongoingProcess.set('connecting' + $scope.seedSource.id, true); var src; - switch (self.seedSourceId) { + switch ($scope.seedSource.id) { case walletService.externalSource.ledger.id: src = ledger; break; @@ -166,21 +167,21 @@ angular.module('copayApp.controllers').controller('joinController', // TODO: cannot currently join an intelTEE testnet wallet (need to detect from the secret) src.getInfoForNewWallet(true, account, 'livenet', function(err, lopts) { - ongoingProcess.set('connecting' + self.seedSourceId, false); + ongoingProcess.set('connecting' + $scope.seedSource.id, false); if (err) { popupService.showAlert(gettextCatalog.getString('Error'), err); return; } opts = lodash.assign(lopts, opts); - self._join(opts); + _join(opts); }); } else { - self._join(opts); + _join(opts); } }; - this._join = function(opts) { + function _join(opts) { ongoingProcess.set('joiningWallet', true); $timeout(function() { profileService.joinWallet(opts, function(err, client) { @@ -207,7 +208,4 @@ angular.module('copayApp.controllers').controller('joinController', }); }); }; - - updateSeedSourceSelect(); - self.setSeedSource(); }); diff --git a/src/js/routes.js b/src/js/routes.js index a6320d2a3..52a9ade41 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -323,7 +323,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/join/:url', views: { 'tab-home@tabs': { - templateUrl: 'views/join.html' + templateUrl: 'views/join.html', + controller: 'joinController' }, } }) @@ -340,7 +341,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/create-personal', views: { 'tab-home@tabs': { - templateUrl: 'views/tab-create-personal.html' + templateUrl: 'views/tab-create-personal.html', + controller: 'createController' }, } }) @@ -348,7 +350,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/create-shared', views: { 'tab-home@tabs': { - templateUrl: 'views/tab-create-shared.html' + templateUrl: 'views/tab-create-shared.html', + controller: 'createController' }, } }) diff --git a/src/sass/views/tab-settings.scss b/src/sass/views/tab-settings.scss index 08d87ef94..2cf1d9efa 100644 --- a/src/sass/views/tab-settings.scss +++ b/src/sass/views/tab-settings.scss @@ -95,6 +95,21 @@ font-size: 16px; } } + input[type="password"] { + border: none; + margin-left: -5px; + padding-left: 4px; + &.incorrect { + margin-right: 10px; + border: 1px solid; + color: #C90505; + } + &.correct { + margin-right: 10px; + border: 1px solid; + color: #00901B; + } + } } #tab-settings { diff --git a/www/views/join.html b/www/views/join.html index da4651de2..2dc8ff05c 100644 --- a/www/views/join.html +++ b/www/views/join.html @@ -6,37 +6,37 @@ - + -
+
- +
@@ -50,7 +50,7 @@
-