From 9bb12e91f5190f4182d916eb06ec5551b4ac9d91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Baz=C3=A1n?= Date: Tue, 9 May 2017 11:48:12 -0300 Subject: [PATCH] adding test modal for pin --- src/js/controllers/modals/pintest.js | 12 +++ src/js/controllers/pin.js | 9 ++- src/js/routes.js | 111 ++++++++++++++------------ src/js/services/applicationService.js | 38 ++++++++- www/views/modals/pintestview.html | 10 +++ 5 files changed, 127 insertions(+), 53 deletions(-) create mode 100644 src/js/controllers/modals/pintest.js create mode 100644 www/views/modals/pintestview.html diff --git a/src/js/controllers/modals/pintest.js b/src/js/controllers/modals/pintest.js new file mode 100644 index 000000000..2ab63e625 --- /dev/null +++ b/src/js/controllers/modals/pintest.js @@ -0,0 +1,12 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('pinTestController', function($scope, applicationService) { + + $scope.goodPin = function() { + applicationService.successfullUnlocked = true; + $scope.pintestview.hide(); + }; + + $scope.badPin = function() {}; + +}); diff --git a/src/js/controllers/pin.js b/src/js/controllers/pin.js index 20862c9d0..27fb48def 100644 --- a/src/js/controllers/pin.js +++ b/src/js/controllers/pin.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('pinController', function($state, $interval, $stateParams, $ionicHistory, $timeout, $scope, $log, configService, appConfigService) { +angular.module('copayApp.controllers').controller('pinController', function($state, $interval, $stateParams, $ionicHistory, $timeout, $scope, $log, configService, appConfigService, applicationService) { var ATTEMPT_LIMIT = 3; var ATTEMPT_LOCK_OUT_TIME = 5 * 60; var currentPin; @@ -126,7 +126,12 @@ angular.module('copayApp.controllers').controller('pinController', function($sta } break; case 'check': - if (isMatch(currentPin)) return $scope.close(); + if (isMatch(currentPin)) { + console.log("##################################### CHECKING"); + applicationService.successfullUnlocked = true; + $scope.close(); + return; + } showError(); checkAttempts(); break; diff --git a/src/js/routes.js b/src/js/routes.js index ac5889e1f..70c32b5bb 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -1135,7 +1135,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } }); }) - .run(function($rootScope, $state, $location, $log, $timeout, startupService, fingerprintService, $ionicHistory, $ionicPlatform, $window, appConfigService, lodash, platformInfo, profileService, uxLanguage, gettextCatalog, openURLService, storageService, scannerService, configService, /* plugins START HERE => */ coinbaseService, glideraService, amazonService, bitpayCardService) { + .run(function($rootScope, $state, $location, $log, $timeout, startupService, fingerprintService, $ionicHistory, $ionicPlatform, $window, appConfigService, lodash, platformInfo, profileService, uxLanguage, gettextCatalog, openURLService, storageService, scannerService, configService, /* plugins START HERE => */ coinbaseService, glideraService, amazonService, bitpayCardService, applicationService) { uxLanguage.init(); @@ -1196,55 +1196,56 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr }); - function checkAndApplyLock(onResume) { - var defaultView = 'tabs.home'; - - if (!platformInfo.isCordova && !platformInfo.isDevel) { - goTo(defaultView); - } - - if (onResume) { - var now = Math.floor(Date.now() / 1000); - if (now < openURLService.unlockUntil) { - openURLService.unlockUntil = null; - $log.debug('Skip startup locking'); - return; - } - } - - function goTo(nextView) { - nextView = nextView || defaultView; - $state.transitionTo(nextView, { - action: 'check' - }).then(function() { - if (nextView == 'lockedView') - $ionicHistory.clearHistory(); - }); - }; - - startupService.ready(); - - configService.whenAvailable(function(config) { - var lockMethod = config.lock && config.lock.method; - $log.debug('App Lock:' + (lockMethod || 'no')); - - if (lockMethod == 'fingerprint' && fingerprintService.isAvailable()) { - fingerprintService.check('unlockingApp', function(err) { - if (err) - goTo('lockedView'); - else if ($ionicHistory.currentStateName() == 'lockedView' || !onResume) - goTo('tabs.home'); - }); - } else if (lockMethod == 'pin') { - goTo('pin'); - } else { - goTo(defaultView); - } - }); - } + // function checkAndApplyLock(onResume) { + // var defaultView = 'tabs.home'; + // + // if (!platformInfo.isCordova && !platformInfo.isDevel) { + // goTo(defaultView); + // } + // + // if (onResume) { + // var now = Math.floor(Date.now() / 1000); + // if (now < openURLService.unlockUntil) { + // openURLService.unlockUntil = null; + // $log.debug('Skip startup locking'); + // return; + // } + // } + // + // function goTo(nextView) { + // nextView = nextView || defaultView; + // $state.transitionTo(nextView, { + // action: 'check' + // }).then(function() { + // if (nextView == 'lockedView') + // $ionicHistory.clearHistory(); + // }); + // }; + // + // startupService.ready(); + // + // configService.whenAvailable(function(config) { + // var lockMethod = config.lock && config.lock.method; + // $log.debug('App Lock:' + (lockMethod || 'no')); + // + // if (lockMethod == 'fingerprint' && fingerprintService.isAvailable()) { + // fingerprintService.check('unlockingApp', function(err) { + // if (err) + // goTo('lockedView'); + // else if ($ionicHistory.currentStateName() == 'lockedView' || !onResume) + // goTo('tabs.home'); + // }); + // } else if (lockMethod == 'pin') { + // goTo('pin'); + // } else { + // goTo(defaultView); + // } + // }); + // } $ionicPlatform.on('resume', function() { - checkAndApplyLock(true); + applicationService.successfullUnlocked = false; + // checkAndApplyLock(true); }); $ionicPlatform.on('menubutton', function() { @@ -1287,8 +1288,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr disableAnimate: true, historyRoot: true }); - - checkAndApplyLock(); + $state.transitionTo('tabs.home'); }); }; // After everything have been loaded, initialize handler URL @@ -1316,5 +1316,16 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr $log.debug('Route change from:', fromState.name || '-', ' to:', toState.name); $log.debug(' toParams:' + JSON.stringify(toParams || {})); $log.debug(' fromParams:' + JSON.stringify(fromParams || {})); + configService.whenAvailable(function(config) { + var lockMethod = config.lock && config.lock.method; + console.log(lockMethod); + console.log("########################"); + if (!lockMethod || lockMethod == 'none') return; + + if (!applicationService.successfullUnlocked && !applicationService.pinIsOpen) { + console.log("################################# OPEN PIN MODAL"); + applicationService.pinModal(); + } + }); }); }); diff --git a/src/js/services/applicationService.js b/src/js/services/applicationService.js index 7ec528f46..bcefb8f55 100644 --- a/src/js/services/applicationService.js +++ b/src/js/services/applicationService.js @@ -1,8 +1,11 @@ 'use strict'; angular.module('copayApp.services') - .factory('applicationService', function($rootScope, $timeout, $ionicHistory, platformInfo, $state) { + .factory('applicationService', function($rootScope, $timeout, $ionicHistory, $ionicModal, platformInfo, $state) { var root = {}; + root.successfullUnlocked = false; + root.pinIsOpen = false; + var isChromeApp = platformInfo.isChromeApp; var isNW = platformInfo.isNW; @@ -33,5 +36,38 @@ angular.module('copayApp.services') } }; + root.pinModal = function() { + + root.pinIsOpen = true; + root.successfullUnlocked = false; + var scope = $rootScope.$new(true); + $ionicModal.fromTemplateUrl('views/modals/pintestview.html', { + scope: scope, + animation: 'slide-in-up', + backdropClickToClose: false, + hardwareBackButtonClose: false + }).then(function(modal) { + scope.pintestview = modal; + scope.pintestview.show(); + }); + scope.openModal = function() { + scope.modal.show(); + }; + scope.closeModal = function() { + scope.modal.hide(); + }; + // Cleanup the modal when we're done with it! + scope.$on('$destroy', function() { + scope.modal.remove(); + }); + // Execute action on hide modal + scope.$on('modal.hidden', function() { + // Execute action + }); + // Execute action on remove modal + scope.$on('modal.removed', function() { + // Execute action + }); + } return root; }); diff --git a/www/views/modals/pintestview.html b/www/views/modals/pintestview.html new file mode 100644 index 000000000..0f1f6afe4 --- /dev/null +++ b/www/views/modals/pintestview.html @@ -0,0 +1,10 @@ + + + + + +