From 1d7e9dda938516d3b58170627f836aeced8e6f6a Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Wed, 3 Dec 2014 16:01:22 -0300 Subject: [PATCH] pin in create --- js/controllers/createProfile.js | 106 +++++++++++++++++++++++++++----- js/controllers/home.js | 25 +++++--- js/services/identityService.js | 35 +++++++---- views/createProfile.html | 89 ++++++++++++++++++++------- views/home.html | 4 +- 5 files changed, 201 insertions(+), 58 deletions(-) diff --git a/js/controllers/createProfile.js b/js/controllers/createProfile.js index 7fdacb716..bec21edd2 100644 --- a/js/controllers/createProfile.js +++ b/js/controllers/createProfile.js @@ -1,23 +1,80 @@ 'use strict'; -angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, $timeout, notification, pluginManager, identityService) { - identityService.goWalletHome(); +angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, $timeout, notification, pluginManager, identityService, pinService) { + + var _credentials, _firstpin; + + $scope.init = function() { + identityService.goWalletHome(); + + pinService.makePinInput($scope, 'newpin', function(newValue) { + _firstpin = newValue; + $scope.askForPin = 2; + }); + + pinService.makePinInput($scope, 'repeatpin', function(newValue) { + if (newValue === _firstpin) { + _firstpin = null; + $scope.createPin(newValue); + } else { + $scope.askForPin = 1; + _firstpin = null; + + $scope.setPinForm.newpin.$setViewValue(''); + $scope.setPinForm.newpin.$render(); + $scope.setPinForm.repeatpin.$setViewValue(''); + $scope.setPinForm.repeatpin.$render(); + $scope.setPinForm.$setPristine(); + + $scope.error = 'Entered PINs were not equal. Try again'; + } + }); + }; + + + $scope.createPin = function(pin) { + preconditions.checkArgument(pin); + preconditions.checkState($rootScope.iden); + preconditions.checkState(_credentials && _credentials.email); + + pinService.save(pin, _credentials.email, _credentials.password, function(err) { + _credentials.password = ''; + _credentials = null; + $scope.askForPin = 0; + $rootScope.hasPin = true; + $scope.createDefaultWallet(); + }); + }; + + $scope.createDefaultWallet = function() { + $rootScope.hideNavigation = false; + identityService.createDefaultWallet(function(err) { + $scope.askForPin =0 ; + $scope.loading = false; + + if (err) { + var msg = err.toString(); + $scope.error = msg; + } + }); + }; $scope.createProfile = function(form) { + $rootScope.hideNavigation = false; if (form && form.$invalid) { - $scope.error('Error', 'Please enter the required fields'); + $scope.error = 'Please enter the required fields'; return; } - $rootScope.starting = true; - identityService.create( - form.email.$modelValue, form.password.$modelValue, function(err) { - $rootScope.starting = false; - if (err) { - var msg = err.toString(); - if (msg.indexOf('EEXIST')>=0 || msg.indexOf('BADC')>=0 ) { - msg = 'This profile already exists' - } - $timeout(function() { + $scope.loading = true; + identityService.create(form.email.$modelValue, form.password.$modelValue, function(err) { + $scope.loading = false; + + if (err) { + var msg = err.toString(); + if (msg.indexOf('EEXIST') >= 0 || msg.indexOf('BADC') >= 0) { + msg = 'This profile already exists' + } + $timeout(function() { form.email.$setViewValue(''); form.email.$render(); form.password.$setViewValue(''); @@ -27,7 +84,28 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun form.$setPristine(); $scope.error = msg; },1); - } + $scope.error = msg; + } else { + $scope.error = null; + // mobile + //if (isMobile.any()) { + if (true) { + _credentials = { + email: form.email.$modelValue, + password: form.password.$modelValue, + }; + $scope.askForPin = 1; + $rootScope.hideNavigation = true; + $timeout(function() { + $rootScope.$digest(); + }, 1); + + console.log('[createProfile.js.70]'); //TODO + return; + } else { + $scope.createDefaultWallet(); + } + } }); } }); diff --git a/js/controllers/home.js b/js/controllers/home.js index eff98ae3f..a18aa733a 100644 --- a/js/controllers/home.js +++ b/js/controllers/home.js @@ -29,7 +29,7 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc }; pinService.makePinInput($scope, 'pin', function(newValue) { - $scope.openPin(newValue); + $scope.openWithPin(newValue); }); pinService.makePinInput($scope, 'newpin', function(newValue) { @@ -39,11 +39,18 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc pinService.makePinInput($scope, 'repeatpin', function(newValue) { if (newValue === _firstpin) { - _firstpin = null; + _firstpin = null; $scope.createPin(newValue); } else { - _firstpin = null; + _firstpin = null; $scope.error = 'Entered PINs were not equal. Try again'; + $scope.askForPin = 1; + + $scope.setPinForm.newpin.$setViewValue(''); + $scope.setPinForm.newpin.$render(); + $scope.setPinForm.repeatpin.$setViewValue(''); + $scope.setPinForm.repeatpin.$render(); + $scope.setPinForm.$setPristine(); } }); @@ -61,16 +68,14 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc } }); - $scope.openWithPin = function(form) { - $scope.confirmedEmail = false; - if (form && form.$invalid) { + + $scope.openWithPin = function(pin) { + + if (!pin) { $scope.error = 'Please enter the required fields'; return; } - $scope.openPin(pin); - }; - $scope.openPin = function(pin) { var credentials = pinService.get(pin, function(err, credentials) { if (err || !credentials) { $scope.error = 'Wrong PIN'; @@ -108,7 +113,6 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc }; $scope.openWithCredentials = function(form) { - $scope.confirmedEmail = false; if (form && form.$invalid) { $scope.error = 'Please enter the required fields'; return; @@ -151,6 +155,7 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc // Open successfully? if (iden) { + $scope.confirmedEmail = false; // mobile //if (isMobile.any() && !$rootScope.hasPin) { diff --git a/js/services/identityService.js b/js/services/identityService.js index 182e7162e..7f84a50e4 100644 --- a/js/services/identityService.js +++ b/js/services/identityService.js @@ -3,6 +3,11 @@ angular.module('copayApp.services') .factory('identityService', function($rootScope, $location, $timeout, $filter, pluginManager, notification, pendingTxsService, balanceService, applicationService) { notification.enableHtml5Mode(); // for chrome: if support, enable it + // TODO: + // * remove iden from rootScope + // * remove wallet from rootScope + // * create walletService + var root = {}; root.check = function(scope) { copay.Identity.checkIfExistsAny({ @@ -22,6 +27,7 @@ angular.module('copayApp.services') }); }; + // TODO should be on 'walletService' root.goWalletHome = function() { var w = $rootScope.wallet; if (w) { @@ -49,23 +55,30 @@ angular.module('copayApp.services') failIfExists: true, }, function(err, iden) { +console.log('[identityService.js.57]'); //TODO if (err) return cb(err); preconditions.checkState(iden); root.bind(iden); - var walletOptions = { - nickname: iden.fullName, - networkName: config.networkName, - requiredCopayers: 1, - totalCopayers: 1, - password: iden.password, - name: 'My wallet', - }; - iden.createWallet(walletOptions, function(err, wallet) { - return cb(err); - }); +console.log('[identityService.js.62]'); //TODO + return cb(null); }); + }; + root.createDefaultWallet = function(cb) { + var iden = $rootScope.iden; + + var walletOptions = { + nickname: iden.fullName, + networkName: config.networkName, + requiredCopayers: 1, + totalCopayers: 1, + password: iden.password, + name: 'My wallet', + }; + iden.createWallet(walletOptions, function(err, wallet) { + return cb(err); + }); }; root.setServerStatus = function(headers) { diff --git a/views/createProfile.html b/views/createProfile.html index 5e9bd3d52..5a55bafe0 100644 --- a/views/createProfile.html +++ b/views/createProfile.html @@ -1,28 +1,36 @@ -
+
-
 
-
 
-
 
-
 
+
+
 
+
+
+
 
+
+
+
 
+
+
+
 
+
Creating profile...
-
+
Copay
-
+

Create Profile

-
+
{{error|translate}} @@ -32,19 +40,18 @@ - Not valid + Not valid
- +
- @@ -54,23 +61,19 @@ - {{'Passwords must match'|translate}} + {{'Passwords must match'|translate}} + !profileForm.repeatpassword.$invalid">
- +
-
+ +
+
+

Set up a PIN ?

+

Enter a 4-digit number for easier access from this device + +

+
+ +
+ + {{error|translate}} + +
+ +
+
+ + +
+
+ + +
+ + +
+ +
+
diff --git a/views/home.html b/views/home.html index ab213bd7a..c8a5f1830 100644 --- a/views/home.html +++ b/views/home.html @@ -98,7 +98,7 @@

Enter your PIN

-
+
@@ -116,7 +116,7 @@
-