mirror of https://github.com/BTCPrivate/copay.git
New PIN page
This commit is contained in:
parent
77f8faaae6
commit
36bd87f729
|
@ -1655,7 +1655,7 @@ input.ng-invalid-match, input.ng-invalid-match:focus {
|
||||||
}
|
}
|
||||||
|
|
||||||
.clipo {
|
.clipo {
|
||||||
padding: 0 0 2rem;
|
margin-bottom: 2rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,31 @@
|
||||||
|
|
||||||
@media (max-width: 1024px) {
|
@media (max-width: 1024px) {
|
||||||
|
|
||||||
|
/* disabling text selection */
|
||||||
|
* {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
-webkit-user-select: auto !important;
|
||||||
|
-khtml-user-select: auto !important;
|
||||||
|
-moz-user-select: auto !important;
|
||||||
|
-ms-user-select: auto !important;
|
||||||
|
user-select: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
-moz-user-drag: none;
|
||||||
|
-ms-user-drag: none;
|
||||||
|
user-drag: none;
|
||||||
|
}
|
||||||
|
/* END disabling text selection */
|
||||||
|
|
||||||
.inner-wrap {
|
.inner-wrap {
|
||||||
-webkit-transition-duration: 250ms;
|
-webkit-transition-duration: 250ms;
|
||||||
transition-duration: 250ms;
|
transition-duration: 250ms;
|
||||||
|
@ -363,6 +388,45 @@
|
||||||
|
|
||||||
/*******************************************/
|
/*******************************************/
|
||||||
|
|
||||||
|
.pin {
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 70%;
|
||||||
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pin-box {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 28px;
|
||||||
|
width: 25%;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pin-numbers {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #000;
|
||||||
|
height: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pin-button-bar {
|
||||||
|
height: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.pin-button {
|
||||||
|
margin: 2px;
|
||||||
|
padding: 4% 10%;
|
||||||
|
display: inline-block;
|
||||||
|
color: #ccc;
|
||||||
|
font-size: 120%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.pin-button:active {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 640px) {
|
@media (max-width: 640px) {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, $timeout, $window, notification, pluginManager, identityService, pinService, isMobile, isCordova, configService, go) {
|
angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, $timeout, $window, notification, pluginManager, identityService, pinService, isMobile, isCordova, configService, go) {
|
||||||
|
|
||||||
var _credentials, _firstpin;
|
var _credentials;
|
||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
|
|
||||||
|
@ -12,41 +12,27 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun
|
||||||
$scope.isMobile = isMobile.any();
|
$scope.isMobile = isMobile.any();
|
||||||
$scope.isWindowsPhoneApp = isMobile.Windows() && isCordova;
|
$scope.isWindowsPhoneApp = isMobile.Windows() && isCordova;
|
||||||
$scope.hideForWP = 0;
|
$scope.hideForWP = 0;
|
||||||
|
$scope.digits = [];
|
||||||
|
$scope.defined = [];
|
||||||
|
$rootScope.askForPin = 0;
|
||||||
|
|
||||||
$scope.createStep = 'storage';
|
$scope.createStep = 'storage';
|
||||||
$scope.useLocalstorage = false;
|
$scope.useLocalstorage = false;
|
||||||
$scope.minPasswordStrength = _.isUndefined(config.minPasswordStrength) ?
|
$scope.minPasswordStrength = _.isUndefined(config.minPasswordStrength) ?
|
||||||
4 : config.minPasswordStrength;
|
4 : config.minPasswordStrength;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
pinService.makePinInput($scope, 'newpin', function(newValue) {
|
$scope.clear = function() {
|
||||||
_firstpin = newValue;
|
pinService.clearPin($scope);
|
||||||
$scope.hideForWP = 0;
|
};
|
||||||
$scope.askForPin = 2;
|
|
||||||
$timeout(function() {
|
|
||||||
$scope.$digest();
|
|
||||||
}, 1);
|
|
||||||
|
|
||||||
|
$scope.press = function(digit) {
|
||||||
|
pinService.pressPin($scope, digit, true);
|
||||||
|
};
|
||||||
|
|
||||||
});
|
$scope.skip = function () {
|
||||||
|
pinService.skipPin($scope, true);
|
||||||
pinService.makePinInput($scope, 'repeatpin', function(newValue) {
|
|
||||||
if (newValue === _firstpin) {
|
|
||||||
_firstpin = null;
|
|
||||||
$scope.createPin(newValue);
|
|
||||||
} else {
|
|
||||||
$scope.askForPin = 1;
|
|
||||||
$scope.hideForWP = 0;
|
|
||||||
$scope.passwordStrength = null;
|
|
||||||
|
|
||||||
_firstpin = null;
|
|
||||||
$scope.error = 'Entered PINs were not equal. Try again';
|
|
||||||
$timeout(function() {
|
|
||||||
$scope.$digest();
|
|
||||||
}, 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.formFocus = function() {
|
$scope.formFocus = function() {
|
||||||
|
@ -63,14 +49,11 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun
|
||||||
preconditions.checkState(_credentials && _credentials.email);
|
preconditions.checkState(_credentials && _credentials.email);
|
||||||
$rootScope.starting = true;
|
$rootScope.starting = true;
|
||||||
|
|
||||||
// hide Keyboard after submit form
|
|
||||||
$window.document.querySelector('#repeatpin').blur();
|
|
||||||
|
|
||||||
$timeout(function() {
|
$timeout(function() {
|
||||||
pinService.save(pin, _credentials.email, _credentials.password, function(err) {
|
pinService.save(pin, _credentials.email, _credentials.password, function(err) {
|
||||||
_credentials.password = '';
|
_credentials.password = '';
|
||||||
_credentials = null;
|
_credentials = null;
|
||||||
$scope.askForPin = 0;
|
$rootScope.askForPin = 0;
|
||||||
$rootScope.hasPin = true;
|
$rootScope.hasPin = true;
|
||||||
$scope.createDefaultWallet();
|
$scope.createDefaultWallet();
|
||||||
});
|
});
|
||||||
|
@ -117,7 +100,7 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun
|
||||||
$rootScope.hideNavigation = false;
|
$rootScope.hideNavigation = false;
|
||||||
$rootScope.starting = true;
|
$rootScope.starting = true;
|
||||||
identityService.createDefaultWallet(function(err) {
|
identityService.createDefaultWallet(function(err) {
|
||||||
$scope.askForPin = 0;
|
$rootScope.askForPin = 0;
|
||||||
$rootScope.starting = null;
|
$rootScope.starting = null;
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -157,7 +140,7 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun
|
||||||
email: emailOrUsername,
|
email: emailOrUsername,
|
||||||
password: password,
|
password: password,
|
||||||
};
|
};
|
||||||
$scope.askForPin = 1;
|
$rootScope.askForPin = 1;
|
||||||
$scope.hideForWP = 0;
|
$scope.hideForWP = 0;
|
||||||
|
|
||||||
$rootScope.hideNavigation = true;
|
$rootScope.hideNavigation = true;
|
||||||
|
|
|
@ -4,12 +4,16 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc
|
||||||
|
|
||||||
var KEY = 'CopayDisclaimer';
|
var KEY = 'CopayDisclaimer';
|
||||||
var ls = localstorageService;
|
var ls = localstorageService;
|
||||||
var _credentials, _firstpin;
|
var _credentials;
|
||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
$scope.isMobile = isMobile.any();
|
$scope.isMobile = isMobile.any();
|
||||||
$scope.isWindowsPhoneApp = isMobile.Windows() && isCordova;
|
$scope.isWindowsPhoneApp = isMobile.Windows() && isCordova;
|
||||||
$scope.hideForWP = 0;
|
$scope.hideForWP = 0;
|
||||||
$scope.attempt = 0;
|
$scope.attempt = 0;
|
||||||
|
$scope.digits = [];
|
||||||
|
$scope.defined = [];
|
||||||
|
$rootScope.askForPin = 0;
|
||||||
|
|
||||||
// This is only for backwards compat, insight api should link to #!/confirmed directly
|
// This is only for backwards compat, insight api should link to #!/confirmed directly
|
||||||
if (getParam('confirmed')) {
|
if (getParam('confirmed')) {
|
||||||
|
@ -40,6 +44,18 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$scope.clear = function() {
|
||||||
|
pinService.clearPin($scope);
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.press = function(digit) {
|
||||||
|
pinService.pressPin($scope, digit);
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.skip = function () {
|
||||||
|
pinService.skipPin($scope);
|
||||||
|
};
|
||||||
|
|
||||||
$scope.agreeDisclaimer = function() {
|
$scope.agreeDisclaimer = function() {
|
||||||
ls.setItem(KEY, true, function(err) {
|
ls.setItem(KEY, true, function(err) {
|
||||||
$scope.showDisclaimer = null;
|
$scope.showDisclaimer = null;
|
||||||
|
@ -55,31 +71,6 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
pinService.makePinInput($scope, 'pin', function(newValue) {
|
|
||||||
$scope.openWithPin(newValue);
|
|
||||||
});
|
|
||||||
|
|
||||||
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.$$childTail.setPinForm.newpin.$setViewValue('');
|
|
||||||
$scope.$$childTail.setPinForm.newpin.$render();
|
|
||||||
$scope.$$childTail.setPinForm.repeatpin.$setViewValue('');
|
|
||||||
$scope.$$childTail.setPinForm.repeatpin.$render();
|
|
||||||
|
|
||||||
_firstpin = null;
|
|
||||||
$scope.askForPin = 1;
|
|
||||||
$scope.error = 'Entered PINs were not equal. Try again';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$scope.openWithPin = function(pin) {
|
$scope.openWithPin = function(pin) {
|
||||||
|
|
||||||
if (!pin) {
|
if (!pin) {
|
||||||
|
@ -88,14 +79,15 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc
|
||||||
}
|
}
|
||||||
$rootScope.starting = true;
|
$rootScope.starting = true;
|
||||||
|
|
||||||
// hide Keyboard after submit form
|
|
||||||
$window.document.querySelector('#pin').blur();
|
|
||||||
|
|
||||||
$timeout(function() {
|
$timeout(function() {
|
||||||
var credentials = pinService.get(pin, function(err, credentials) {
|
var credentials = pinService.get(pin, function(err, credentials) {
|
||||||
if (err || !credentials) {
|
if (err || !credentials) {
|
||||||
$rootScope.starting = null;
|
$rootScope.starting = null;
|
||||||
$scope.error = 'Wrong PIN';
|
$scope.error = 'Wrong PIN';
|
||||||
|
$scope.clear();
|
||||||
|
$timeout(function() {
|
||||||
|
$scope.error = null;
|
||||||
|
}, 2000);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$scope.open(credentials.email, credentials.password);
|
$scope.open(credentials.email, credentials.password);
|
||||||
|
@ -117,14 +109,11 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc
|
||||||
preconditions.checkState(_credentials && _credentials.email);
|
preconditions.checkState(_credentials && _credentials.email);
|
||||||
$rootScope.starting = true;
|
$rootScope.starting = true;
|
||||||
|
|
||||||
// hide Keyboard after submit form
|
|
||||||
$window.document.querySelector('#repeatpin').blur();
|
|
||||||
|
|
||||||
$timeout(function() {
|
$timeout(function() {
|
||||||
pinService.save(pin, _credentials.email, _credentials.password, function(err) {
|
pinService.save(pin, _credentials.email, _credentials.password, function(err) {
|
||||||
_credentials.password = '';
|
_credentials.password = '';
|
||||||
_credentials = null;
|
_credentials = null;
|
||||||
$scope.askForPin = 0;
|
$rootScope.askForPin = 0;
|
||||||
$rootScope.hasPin = true;
|
$rootScope.hasPin = true;
|
||||||
$rootScope.starting = null;
|
$rootScope.starting = null;
|
||||||
$scope.openWallets();
|
$scope.openWallets();
|
||||||
|
@ -194,7 +183,7 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc
|
||||||
email: email,
|
email: email,
|
||||||
password: password,
|
password: password,
|
||||||
};
|
};
|
||||||
$scope.askForPin = 1;
|
$rootScope.askForPin = 1;
|
||||||
$rootScope.starting = false;
|
$rootScope.starting = false;
|
||||||
$rootScope.hideNavigation = true;
|
$rootScope.hideNavigation = true;
|
||||||
$timeout(function() {
|
$timeout(function() {
|
||||||
|
|
|
@ -10,6 +10,8 @@ angular.module('copayApp.services')
|
||||||
var ls = localstorageService;
|
var ls = localstorageService;
|
||||||
var root = {};
|
var root = {};
|
||||||
|
|
||||||
|
var _firstpin;
|
||||||
|
|
||||||
root.check = function(cb) {
|
root.check = function(cb) {
|
||||||
ls.getItem(KEY, function(err, value) {
|
ls.getItem(KEY, function(err, value) {
|
||||||
return cb(err, value ? true : false);
|
return cb(err, value ? true : false);
|
||||||
|
@ -48,27 +50,61 @@ angular.module('copayApp.services')
|
||||||
ls.removeItem(KEY, cb);
|
ls.removeItem(KEY, cb);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
root.clearPin = function(scope) {
|
||||||
root.makePinInput = function(scope, name, cb) {
|
scope.digits = [];
|
||||||
Object.defineProperty(scope, name, {
|
scope.defined = [];
|
||||||
get: function() {
|
|
||||||
return this['_' + name];
|
|
||||||
},
|
|
||||||
set: function(newValue) {
|
|
||||||
this['_' + name] = newValue;
|
|
||||||
scope.error = null;
|
|
||||||
scope.loading = null;
|
|
||||||
if (newValue && newValue.length == 4) {
|
|
||||||
$timeout(function() {
|
|
||||||
return cb(newValue);
|
|
||||||
}, 30);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
enumerable: true,
|
|
||||||
configurable: true
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
root.pressPin = function(scope, digit, skipOpenWithPin) {
|
||||||
|
scope.error = null;
|
||||||
|
scope.digits.push(digit);
|
||||||
|
scope.defined.push(true);
|
||||||
|
if (scope.digits.length == 4) {
|
||||||
|
var pin = scope.digits.join('');
|
||||||
|
if (!$rootScope.hasPin) {
|
||||||
|
if (!_firstpin) {
|
||||||
|
_firstpin = pin;
|
||||||
|
$timeout(function() {
|
||||||
|
scope.clear();
|
||||||
|
}, 100);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (pin === _firstpin) {
|
||||||
|
scope.createPin(pin);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_firstpin = null;
|
||||||
|
$timeout(function() {
|
||||||
|
scope.clear();
|
||||||
|
scope.error = 'Entered PINs were not equal. Try again';
|
||||||
|
$timeout(function() {
|
||||||
|
scope.error = null;
|
||||||
|
}, 2000);
|
||||||
|
}, 100);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!skipOpenWithPin) {
|
||||||
|
scope.openWithPin(pin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
root.skipPin = function(scope, creatingProfile) {
|
||||||
|
if (!$rootScope.hasPin) {
|
||||||
|
if (!creatingProfile) {
|
||||||
|
scope.openWallets();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
scope.createDefaultWallet()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
scope.pinLogout();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return root;
|
return root;
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
<div class="createProfile" ng-controller="CreateProfileController" ng-init="init()">
|
<div class="createProfile" ng-controller="CreateProfileController" ng-init="init()">
|
||||||
|
|
||||||
|
<div ng-if="!$root.starting && $root.askForPin">
|
||||||
|
<div ng-include="'views/includes/pin-number.html'"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div ng-show="$root.starting">
|
<div ng-show="$root.starting">
|
||||||
<div ng-include="'views/includes/loading.html'" ng-init="title = 'Creating profile'"></div>
|
<div ng-include="'views/includes/loading.html'" ng-init="title = 'Creating profile'"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="large-4 large-centered medium-7 medium-centered columns m20b" ng-show="!$root.starting && !askForPin">
|
<div class="row m20b" ng-show="!$root.starting && !$root.askForPin">
|
||||||
|
<div class="large-4 large-centered medium-7 medium-centered columns">
|
||||||
<div class="logo-setup hide-for-small-only" ng-hide="hideForWP">
|
<div class="logo-setup hide-for-small-only" ng-hide="hideForWP">
|
||||||
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
|
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
|
||||||
</div>
|
</div>
|
||||||
|
@ -199,13 +205,15 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="large-4 large-centered medium-6 medium-centered columns m20b" ng-show="!$root.starting && askForPin">
|
<div class="row m20b" ng-show="!$root.starting && $root.askForPin">
|
||||||
<div class="clipo" ng-hide="hideForWP">
|
<div class="large-4 large-centered medium-6 medium-centered columns">
|
||||||
|
<div class="clipo">
|
||||||
<img src="img/clipo-pin.png" alt="clipo" width="380">
|
<img src="img/clipo-pin.png" alt="clipo" width="380">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="box-notification" ng-show="error && !passwordStrength">
|
<div class="box-notification" ng-show="error">
|
||||||
<div class="box-icon error">
|
<div class="box-icon error">
|
||||||
<i class="fi-x size-24"></i>
|
<i class="fi-x size-24"></i>
|
||||||
</div>
|
</div>
|
||||||
|
@ -213,30 +221,8 @@
|
||||||
{{error|translate}}
|
{{error|translate}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div ng-include="'views/includes/pin.html'"></div>
|
||||||
<form name="setPinForm" ng-model="setPinForm" novalidate>
|
|
||||||
<div class="input" ng-if="askForPin == 1">
|
|
||||||
<input id="newpin" type="tel" ng-model="newpin" class="form-control" ng-maxlength="4" ng-minlength="4" maxlength="4" ng-pattern="/^[0-9]{1,4}$/" placeholder="PIN" name="newpin" required show-focus="askForPin == 1 && !isWindowsPhoneApp" ng-focus="formFocus()">
|
|
||||||
<i class="icon-locked" ng-hide="isWindowsPhoneApp"></i>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input" ng-if="askForPin == 2">
|
|
||||||
<input id="repeatpin" type="tel" ng-model="repeatpin" class="form-control" ng-maxlength="4" ng-minlength="4" maxlength="4" ng-pattern="/^[0-9]{1,4}$/" placeholder="Confirm your PIN" name="repeatpin" required show-focus="askForPin == 2 && !isWindowsPhoneApp" ng-focus="formFocus()">
|
|
||||||
<i class="icon-locked"></i>
|
|
||||||
</div>
|
|
||||||
<div class="box-setup-footer row collapse">
|
|
||||||
<div class="large-6 medium-6 small-6 columns">
|
|
||||||
<a class="button secondary radius m0" ng-click="createDefaultWallet()">
|
|
||||||
<span translate>Skip</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="large-6 medium-6 small-6 columns text-right">
|
|
||||||
<button translate ng-click="createPin(setPinForm.repeatpin.$modelValue)" class="button primary radius expand m0"
|
|
||||||
ng-disabled="setPinForm.$invalid || error">
|
|
||||||
OK
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
<div class="home" ng-controller="HomeController" ng-init="init()">
|
<div class="home" ng-controller="HomeController" ng-init="init()">
|
||||||
|
|
||||||
|
|
||||||
|
<div ng-if="$root.askForPin || ($root.hasPin && !$root.iden)">
|
||||||
|
<div ng-include="'views/includes/pin-number.html'"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div ng-show="$root.starting">
|
<div ng-show="$root.starting">
|
||||||
<div ng-include="'views/includes/loading.html'" ng-init="title = 'Accessing your profile'"></div>
|
<div ng-include="'views/includes/loading.html'" ng-init="title = 'Accessing your profile'"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -33,9 +38,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
<div class="large-4 large-centered medium-6 medium-centered columns" ng-show="!$root.starting && !showDisclaimer">
|
<div class="large-4 large-centered medium-6 medium-centered columns" ng-show="!$root.starting && !showDisclaimer">
|
||||||
|
|
||||||
<div class="logo-setup" ng-show="!$root.iden && !hideForWP">
|
<div class="logo-setup" ng-show="!$root.iden && !hideForWP && !$root.hasPin">
|
||||||
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
|
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
|
||||||
<div ng-include="'views/includes/version.html'"></div>
|
<div ng-include="'views/includes/version.html'"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -52,11 +58,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-if="askForPin">
|
<div ng-if='$root.askForPin || ($root.hasPin && !$root.iden)'>
|
||||||
<div class="clipo">
|
<div class="clipo">
|
||||||
<img src="img/clipo-pin.png" alt="clipo" width="380">
|
<img src="img/clipo-pin-enter.png" alt="clipo" width="300" ng-show="$root.hasPin && !$root.iden">
|
||||||
|
<img src="img/clipo-pin.png" alt="clipo" width="380" ng-show="$root.askForPin">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="box-notification" ng-show="error">
|
<div class="box-notification" ng-show="error">
|
||||||
<div class="box-icon error">
|
<div class="box-icon error">
|
||||||
<i class="fi-x size-24"></i>
|
<i class="fi-x size-24"></i>
|
||||||
|
@ -65,72 +71,10 @@
|
||||||
{{error|translate}}
|
{{error|translate}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div ng-include="'views/includes/pin.html'"></div>
|
||||||
<form name="setPinForm" ng-model="setPinForm" novalidate>
|
|
||||||
<div class="input" ng-show="askForPin == 1">
|
|
||||||
<input id="newpin" type="tel" ng-model="newpin" class="form-control" ng-maxlength="4" ng-minlength="4" maxlength="4" ng-pattern="/^[0-9]{1,4}$/" placeholder="PIN" name="newpin" required show-focus="askForPin == 1 && !isWindowsPhoneApp" ng-focus="formFocus()">
|
|
||||||
<i class="icon-locked"></i>
|
|
||||||
</div>
|
|
||||||
<div class="input" ng-show="askForPin == 2">
|
|
||||||
<input id="repeatpin" type="tel" ng-model="repeatpin" class="form-control" ng-maxlength="4" ng-minlength="4" maxlength="4" ng-pattern="/^[0-9]{1,4}$/" placeholder="Confirm your PIN" name="repeatpin" required show-focus="askForPin == 2 && !isWindowsPhoneApp" ng-focus="formFocus()">
|
|
||||||
<i class="icon-locked"></i>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row collapse">
|
<div ng-if='!$root.hasPin && !$root.askForPin && !$root.iden'>
|
||||||
<div class="large-6 medium-6 small-6 columns">
|
|
||||||
<a class="button secondary radius m0" ng-click="openWallets()">
|
|
||||||
<span translate>Skip</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="large-6 medium-6 small-6 columns text-right">
|
|
||||||
<button translate ng-click="createPin(setPinForm.repeatpin.$modelValue)" class="button primary radius expand m0"
|
|
||||||
ng-disabled="setPinForm.$invalid || error">
|
|
||||||
OK
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div ng-if='$root.hasPin && !$root.iden'>
|
|
||||||
<div class="clipo" ng-hide="hideForWP">
|
|
||||||
<img src="img/clipo-pin-enter.png" alt="clipo" width="300">
|
|
||||||
</div>
|
|
||||||
<form name="pinForm" novalidate>
|
|
||||||
<div class="box-notification" ng-show="error">
|
|
||||||
<div class="box-icon error">
|
|
||||||
<i class="fi-x size-24"></i>
|
|
||||||
</div>
|
|
||||||
<span class="text-warning size-14">
|
|
||||||
{{error|translate}}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input">
|
|
||||||
<input id="pin" type="tel" ng-model="pin" class="form-control" ng-maxlength="4" ng-minlength="4" maxlength="4" ng-pattern="/^[0-9]{1,4}$/" placeholder="Pin number" name="pin" required ng-focus="formFocus()">
|
|
||||||
<i class="icon-locked"></i>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row collapse">
|
|
||||||
<div class="large-6 medium-6 small-6 columns">
|
|
||||||
<a class="button warning radius m0" ng-click="pinLogout()">
|
|
||||||
<i class="icon-power"></i>
|
|
||||||
<span translate>Logout</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="large-6 medium-6 small-6 columns text-right">
|
|
||||||
<button translate ng-click="openWithPin(pinForm.pin.$modelValue)" class="button primary radius expand m0"
|
|
||||||
ng-disabled="pinForm.$invalid || error">
|
|
||||||
Sign in
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div ng-if='!$root.hasPin && !askForPin && !$root.iden'>
|
|
||||||
<div class="clipo" ng-hide="hideForWP">
|
<div class="clipo" ng-hide="hideForWP">
|
||||||
<img src="img/clipo-signin.png" alt="clipo" width="310">
|
<img src="img/clipo-signin.png" alt="clipo" width="310">
|
||||||
</div>
|
</div>
|
||||||
|
@ -214,5 +158,6 @@ aasdas
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
<div class="pin-numbers">
|
||||||
|
<div class="pin-button-bar">
|
||||||
|
<a class="pin-button" ng-click="press(1)">1</a>
|
||||||
|
<a class="pin-button" ng-click="press(2)">2</a>
|
||||||
|
<a class="pin-button" ng-click="press(3)">3</a>
|
||||||
|
</div>
|
||||||
|
<div class="pin-button-bar">
|
||||||
|
<a class="pin-button" ng-click="press(4)">4</a>
|
||||||
|
<a class="pin-button" ng-click="press(5)">5</a>
|
||||||
|
<a class="pin-button" ng-click="press(6)">6</a>
|
||||||
|
</div>
|
||||||
|
<div class="pin-button-bar">
|
||||||
|
<a class="pin-button" ng-click="press(7)">7</a>
|
||||||
|
<a class="pin-button" ng-click="press(8)">8</a>
|
||||||
|
<a class="pin-button" ng-click="press(9)">9</a>
|
||||||
|
</div>
|
||||||
|
<div class="pin-button-bar">
|
||||||
|
<a class="pin-button" ng-click="skip()">
|
||||||
|
<i class="fi-unlock" ng-show="$root.hasPin"></i>
|
||||||
|
<i class="fi-home" ng-show="!$root.hasPin"></i>
|
||||||
|
</a>
|
||||||
|
<a class="pin-button" ng-click="press(0)">0</a>
|
||||||
|
<a class="pin-button" ng-click="clear()"><i class="fi-arrow-left"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<div class="pin" ng-show="!error">
|
||||||
|
<div class="pin-box">
|
||||||
|
<i class="" ng-show="!defined[0]">-</i>
|
||||||
|
<i class="" ng-show="defined[0]">*</i>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pin-box">
|
||||||
|
<i class="" ng-show="!defined[1]">-</i>
|
||||||
|
<i class="" ng-show="defined[1]">*</i>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pin-box">
|
||||||
|
<i class="" ng-show="!defined[2]">-</i>
|
||||||
|
<i class="" ng-show="defined[2]">*</i>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pin-box">
|
||||||
|
<i class="" ng-show="!defined[3]">-</i>
|
||||||
|
<i class="" ng-show="defined[3]">*</i>
|
||||||
|
</div>
|
||||||
|
</div>
|
Loading…
Reference in New Issue