diff --git a/src/js/controllers/advancedSettings.js b/src/js/controllers/advancedSettings.js index a7f6187a8..8af32de96 100644 --- a/src/js/controllers/advancedSettings.js +++ b/src/js/controllers/advancedSettings.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('advancedSettingsController', function($scope, $timeout, $state, $log, $window, $ionicModal, lodash, configService, uxLanguage, platformInfo, pushNotificationsService, profileService, feeService, storageService, $ionicHistory, $ionicScrollDelegate) { +angular.module('copayApp.controllers').controller('advancedSettingsController', function($scope, $log, configService, platformInfo) { var updateConfig = function() { var config = configService.getSync(); @@ -52,13 +52,6 @@ angular.module('copayApp.controllers').controller('advancedSettingsController', }); }; - $scope.usePincodeChange = function() { - $state.go('tabs.pincode', { - fromSettings: true, - locking: $scope.usePincode.enabled - }); - }; - $scope.$on("$ionicView.beforeEnter", function(event, data) { $scope.isCordova = platformInfo.isCordova; updateConfig(); diff --git a/src/js/controllers/lockapp.js b/src/js/controllers/lockapp.js new file mode 100644 index 000000000..02f68921c --- /dev/null +++ b/src/js/controllers/lockapp.js @@ -0,0 +1,65 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('lockappController', function($state, $scope, $log, configService, popupService, gettextCatalog, appConfigService) { + + $scope.$on("$ionicView.beforeEnter", function(event) { + var config = configService.getSync(); + $scope.fingerprintAvailable = true; + // $scope.fingerprintAvailable = fingerprintService.isAvailable(); + + $scope.usePincode = { + enabled: config.lockapp ? config.lockapp.pincode.enabled : false + }; + $scope.useFingerprint = { + enabled: config.lockapp ? config.lockapp.fingerprint.enabled : false + }; + }); + + $scope.usePincodeChange = function() { + $state.go('tabs.lockapp.pincode', { + fromSettings: true, + locking: $scope.usePincode.enabled + }); + }; + + $scope.useFingerprintChange = function() { + if ($scope.usePincode.enabled) { + var message = gettextCatalog.getString('{{appName}} is protected by Pin Code. Are you sure you want to disable it?', { + appName: appConfigService.nameCase + }); + var okText = gettextCatalog.getString('Yes'); + var cancelText = gettextCatalog.getString('Cancel'); + popupService.showConfirm(null, message, okText, cancelText, function(ok) { + if (!ok) { + $scope.useFingerprint = { + enabled: false + }; + return; + } + saveConfig(); + }); + } else + saveConfig(); + + function saveConfig() { + $scope.usePincode = { + enabled: false + }; + var opts = { + lockapp: { + pincode: { + enabled: false, + value: '' + }, + fingerprint: { + enabled: $scope.useFingerprint.enabled + } + } + }; + + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + }; + }; +}); diff --git a/src/js/controllers/pincode.js b/src/js/controllers/pincode.js index c2ba22363..65249208a 100644 --- a/src/js/controllers/pincode.js +++ b/src/js/controllers/pincode.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('pincodeController', function($state, $stateParams, $ionicHistory, $timeout, $scope, $log, $window, configService) { +angular.module('copayApp.controllers').controller('pincodeController', function($state, $stateParams, $ionicHistory, $timeout, $scope, $log, configService) { $scope.$on("$ionicView.beforeEnter", function(event) { $scope.currentPincode = $scope.newPincode = ''; @@ -35,7 +35,7 @@ angular.module('copayApp.controllers').controller('pincodeController', function( $scope.save = function() { if (!isComplete()) return; var config = configService.getSync(); - var match = config.pincode.value == $scope.currentPincode ? true : false; + var match = config.lockapp.pincode.value == $scope.currentPincode ? true : false; if (!$scope.locking) { if (match) { @@ -61,9 +61,14 @@ angular.module('copayApp.controllers').controller('pincodeController', function( function saveSettings(enabled, value) { var opts = { - pincode: { - enabled: enabled, - value: value + lockapp: { + pincode: { + enabled: enabled, + value: value + }, + fingerprint: { + enabled: false + } } }; diff --git a/src/js/routes.js b/src/js/routes.js index 46f688f0a..48ce91c04 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -451,11 +451,20 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } } }) - .state('tabs.pincode', { + .state('tabs.lockapp', { + url: '/lockapp', + views: { + 'tab-settings@tabs': { + controller: 'lockappController', + templateUrl: 'views/lockapp.html', + } + } + }) + .state('tabs.lockapp.pincode', { url: '/pincode/:fromSettings/:locking', views: { 'tab-settings@tabs': { - controller: 'pincodeController', + controller: 'lockappController', templateUrl: 'views/pincode.html', cache: false } @@ -1224,14 +1233,12 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr }); configService.whenAvailable(function(config) { startupService.ready(); - if (platformInfo.isCordova && config.pincode && config.pincode.enabled) { + if (platformInfo.isCordova && config.lockapp.pincode && config.lockapp.pincode.enabled) { $state.transitionTo('pincode').then(function() { - // Clear history $ionicHistory.clearHistory(); }); } else { $state.transitionTo('tabs.home').then(function() { - // Clear history $ionicHistory.clearHistory(); }); } diff --git a/src/js/services/configService.js b/src/js/services/configService.js index 30522da04..b4069f092 100644 --- a/src/js/services/configService.js +++ b/src/js/services/configService.js @@ -53,9 +53,14 @@ angular.module('copayApp.services').factory('configService', function(storageSer } }, - pincode: { - enabled: false, - value: '', + lockapp: { + pincode: { + enabled: false, + value: '', + }, + fingerprint: { + enabled: false + } }, // External services diff --git a/www/views/advancedSettings.html b/www/views/advancedSettings.html index 251fd9940..ee20c46e0 100644 --- a/www/views/advancedSettings.html +++ b/www/views/advancedSettings.html @@ -29,13 +29,14 @@ Hide Next Steps Card -
+
- - Use pin to lock/unlock the app - -
+ + Lock App + + + diff --git a/www/views/lockapp.html b/www/views/lockapp.html new file mode 100644 index 000000000..3a2381b5c --- /dev/null +++ b/www/views/lockapp.html @@ -0,0 +1,19 @@ + + + {{'Lock App' | translate}} + + + + + + + Enable Pin Code + + +
+ + Enable Fingerprint + +
+
+