diff --git a/public/img/onboarding-backup-warning.svg b/public/img/backup-warning.svg similarity index 100% rename from public/img/onboarding-backup-warning.svg rename to public/img/backup-warning.svg diff --git a/public/img/onboarding-no-screenshot.svg b/public/img/no-screenshot.svg similarity index 100% rename from public/img/onboarding-no-screenshot.svg rename to public/img/no-screenshot.svg diff --git a/public/views/backup.html b/public/views/backup.html index ab45d0ec0..4453e17d7 100644 --- a/public/views/backup.html +++ b/public/views/backup.html @@ -1,10 +1,10 @@ - + - - - + + {{viewTitle}} + + +
diff --git a/public/views/onboarding/backupWarning.html b/public/views/backupWarning.html similarity index 75% rename from public/views/onboarding/backupWarning.html rename to public/views/backupWarning.html index d588060bc..55464baac 100644 --- a/public/views/onboarding/backupWarning.html +++ b/public/views/backupWarning.html @@ -1,7 +1,7 @@ - + - @@ -18,7 +18,7 @@

- +

diff --git a/public/views/includes/backupNeededPopup.html b/public/views/includes/backupNeededPopup.html index c74742e06..dc9747b55 100644 --- a/public/views/includes/backupNeededPopup.html +++ b/public/views/includes/backupNeededPopup.html @@ -10,14 +10,14 @@

diff --git a/public/views/onboarding/backupRequest.html b/public/views/onboarding/backupRequest.html index df33a168e..a76125f41 100644 --- a/public/views/onboarding/backupRequest.html +++ b/public/views/onboarding/backupRequest.html @@ -19,7 +19,7 @@
+ ui-sref="onboarding.backupWarning({from: 'onboarding.backupRequest', walletId: walletId})" translate>Backup wallet
diff --git a/public/views/preferences.html b/public/views/preferences.html index c147ef54b..41319fa36 100644 --- a/public/views/preferences.html +++ b/public/views/preferences.html @@ -40,7 +40,7 @@
Security
- + Backup diff --git a/public/views/tab-receive.html b/public/views/tab-receive.html index 3ab6158aa..d8f43983b 100644 --- a/public/views/tab-receive.html +++ b/public/views/tab-receive.html @@ -31,7 +31,7 @@
-
+
Wallet not backed up
diff --git a/src/js/controllers/backup.js b/src/js/controllers/backup.js index 62170a6c7..01eeae6ec 100644 --- a/src/js/controllers/backup.js +++ b/src/js/controllers/backup.js @@ -84,13 +84,15 @@ angular.module('copayApp.controllers').controller('backupController', $scope.closeBackupResultModal = function() { $scope.confirmBackupModal.hide(); + $scope.confirmBackupModal.remove(); - if ($stateParams.fromOnboarding) { - $state.go('onboarding.disclaimer'); - } else { - $ionicHistory.removeBackView(); - $state.go('tabs.home'); - } + profileService.isDisclaimerAccepted(function(val) { + if (val) { + $ionicHistory.removeBackView(); + $state.go('tabs.home'); + } + else $state.go('onboarding.disclaimer'); + }); }; var confirm = function(cb) { @@ -184,17 +186,6 @@ angular.module('copayApp.controllers').controller('backupController', $scope.selectComplete = false; }; - $scope.backupGoBack = function() { - if ($stateParams.fromOnboarding) $state.go('onboarding.backupWarning', { - walletId: $stateParams.walletId, - fromOnboarding: true - }); - else if ($stateParams.fromReceive) $state.go('tabs.receive'); - else $state.go('tabs.preferences', { - walletId: $stateParams.walletId - }); - }; - $scope.$on("$ionicView.enter", function(event, data) { $scope.deleted = isDeletedSeed(); if ($scope.deleted) { diff --git a/src/js/controllers/onboarding/backupWarning.js b/src/js/controllers/onboarding/backupWarning.js index 6b83ee964..260c5eebd 100644 --- a/src/js/controllers/onboarding/backupWarning.js +++ b/src/js/controllers/onboarding/backupWarning.js @@ -5,20 +5,31 @@ angular.module('copayApp.controllers').controller('backupWarningController', fun $scope.walletId = $stateParams.walletId; $scope.openPopup = function() { $ionicModal.fromTemplateUrl('views/includes/screenshotWarningModal.html', { - scope: $scope, - backdropClickToClose: false, - hardwareBackButtonClose: false - }).then(function(modal) { - $scope.warningModal = modal; - $scope.warningModal.show(); - }); + scope: $scope, + backdropClickToClose: false, + hardwareBackButtonClose: false + }).then(function(modal) { + $scope.warningModal = modal; + $scope.warningModal.show(); + }); $scope.close = function() { $scope.warningModal.hide(); - $state.go('onboarding.backup', { - walletId: $stateParams.walletId, - fromOnboarding: true - }); + if ($stateParams.from == 'onboarding.backupRequest') + $state.go('onboarding.backup', { + walletId: $stateParams.walletId + }); + else + $state.go($stateParams.from + '.backup', { + walletId: $stateParams.walletId + }); }; } + + $scope.goBack = function() { + $state.go($stateParams.from, { + walletId: $stateParams.walletId + }); + }; + }); diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js index aec3c8b20..73d670693 100644 --- a/src/js/controllers/tab-receive.js +++ b/src/js/controllers/tab-receive.js @@ -53,6 +53,7 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi $scope.wallet = wallet; $log.debug('Wallet changed: ' + wallet.name); $scope.setAddress(); + if ($scope.wallet.showBackupNeededModal) $scope.openBackupNeededModal(); $scope.$apply(); }); }); @@ -71,28 +72,32 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi }, 100); }; - $scope.openBackupNeededPopup = function() { + $scope.openBackupNeededModal = function() { $ionicModal.fromTemplateUrl('views/includes/backupNeededPopup.html', { scope: $scope, backdropClickToClose: false, hardwareBackButtonClose: false }).then(function(modal) { - $scope.BackupNeededPopup = modal; - $scope.BackupNeededPopup.show(); + $scope.BackupNeededModal = modal; + $scope.BackupNeededModal.show(); }); }; - $scope.closeBackupNeededModal = function() { - $scope.BackupNeededPopup.hide(); - $scope.BackupNeededPopup.remove(); + $scope.close = function() { + $scope.BackupNeededModal.hide(); + $scope.BackupNeededModal.remove(); + profileService.setBackupNeededModalFlag($scope.wallet.credentials.walletId); + }; + + $scope.doBackup = function() { + $scope.close(); + $scope.goToBackupFlow(); }; $scope.goToBackupFlow = function() { - $scope.BackupNeededPopup.hide(); - $scope.BackupNeededPopup.remove(); - $state.go('tabs.receive.backup', { - fromReceive: true, + $state.go('tabs.receive.backupWarning', { + from: 'tabs.receive', walletId: $scope.wallet.credentials.walletId }); - }; + } }); diff --git a/src/js/routes.js b/src/js/routes.js index 6dde26bca..9b37ce0a9 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -432,6 +432,14 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } } }) + .state('tabs.preferences.backupWarning', { + url: '/backupWarning/:from', + views: { + 'tab-settings@tabs': { + templateUrl: 'views/backupWarning.html' + } + } + }) .state('tabs.preferences.backup', { url: '/backup', views: { @@ -571,15 +579,23 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr * */ - .state('tabs.receive.backup', { - url: '/backup/:fromReceive/:walletId', - views: { - 'tab-receive@tabs': { - controller: 'backupController', - templateUrl: 'views/backup.html' + .state('tabs.receive.backupWarning', { + url: '/backupWarning/:from/:walletId', + views: { + 'tab-receive@tabs': { + templateUrl: 'views/backupWarning.html' + } } - } - }) + }) + .state('tabs.receive.backup', { + url: '/backup/:walletId', + views: { + 'tab-receive@tabs': { + controller: 'backupController', + templateUrl: 'views/backup.html' + } + } + }) /* * @@ -633,15 +649,15 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } }) .state('onboarding.backupWarning', { - url: '/backupWarning/:walletId', + url: '/backupWarning/:from/:walletId', views: { 'onboarding': { - templateUrl: 'views/onboarding/backupWarning.html' + templateUrl: 'views/backupWarning.html' } } }) .state('onboarding.backup', { - url: '/backup/:walletId/:fromOnboarding', + url: '/backup/:walletId', views: { 'onboarding': { templateUrl: 'views/backup.html', diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index c6bc0d3d0..bb1e15084 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -38,6 +38,22 @@ angular.module('copayApp.services') }); } + root.setBackupNeededModalFlag = function(walletId) { + storageService.setBackupNeededModalFlag(walletId, true, function(err) { + if (err) $log.error(err); + $log.debug('Backup warning modal flag stored'); + root.wallet[walletId].showBackupNeededModal = false; + }); + }; + + function _showBackupNeededModal(wallet, cb) { + storageService.getBackupNeededModalFlag(wallet.credentials.walletId, function(err, val) { + if (err) $log.error(err); + if (val) return cb(false); + return cb(true); + }); + }; + root.setBackupFlag = function(walletId) { storageService.setBackupFlag(walletId, function(err) { if (err) $log.error(err); @@ -101,6 +117,10 @@ angular.module('copayApp.services') wallet.balanceHidden = val; }); + _showBackupNeededModal(wallet, function(val) { + wallet.showBackupNeededModal = val; + }); + wallet.removeAllListeners(); wallet.on('report', function(n) { diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 4df36dab1..a1daeb36e 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -365,6 +365,14 @@ angular.module('copayApp.services') storage.get('receiveTips', cb); }; + root.setBackupNeededModalFlag = function(walletId, val, cb) { + storage.set('showBackupNeededModal-' + walletId, val, cb); + }; + + root.getBackupNeededModalFlag = function(walletId, cb) { + storage.get('showBackupNeededModal-' + walletId, cb); + }; + root.setAmazonGiftCards = function(network, gcs, cb) { storage.set('amazonGiftCards-' + network, gcs, cb); }; diff --git a/src/sass/views/onboarding/onboard-backup-warning.scss b/src/sass/views/backup-warning.scss similarity index 89% rename from src/sass/views/onboarding/onboard-backup-warning.scss rename to src/sass/views/backup-warning.scss index af09d351f..ee1017bcc 100644 --- a/src/sass/views/onboarding/onboard-backup-warning.scss +++ b/src/sass/views/backup-warning.scss @@ -1,4 +1,4 @@ -#onboarding-backup-warning{ +#backup-warning{ .warning{ margin:4rem auto 1rem; height: 11rem; @@ -21,7 +21,7 @@ } @media (max-width: 400px){ - #onboarding-backup-warning{ + #backup-warning{ .warning{ margin: 2rem auto 1rem; height: 8rem; @@ -45,10 +45,10 @@ } } @media (max-height: 540px){ - #onboarding-backup-warning{ + #backup-warning{ .cta-buttons{ float:left; position: relative; } } -} \ No newline at end of file +} diff --git a/src/sass/views/includes/modals/screenshot-warning-model.scss b/src/sass/views/includes/modals/screenshot-warning-model.scss index e979e9ff8..64662f0ef 100644 --- a/src/sass/views/includes/modals/screenshot-warning-model.scss +++ b/src/sass/views/includes/modals/screenshot-warning-model.scss @@ -1,7 +1,7 @@ #screenshot-warning-modal{ .popup-modal-header{ &-img{ - background-image: url('../img/onboarding-no-screenshot.svg'); + background-image: url('../img/no-screenshot.svg'); } } -} \ No newline at end of file +} diff --git a/src/sass/views/onboarding/onboarding.scss b/src/sass/views/onboarding/onboarding.scss index c44f79878..7dad89ace 100644 --- a/src/sass/views/onboarding/onboarding.scss +++ b/src/sass/views/onboarding/onboarding.scss @@ -101,7 +101,7 @@ max-width: 600px !important; } button{ - max-width: 400px !important; + max-width: 400px !important; } } } @@ -112,6 +112,6 @@ @import "onboard-tour"; @import "onboard-collect-email"; @import "onboard-backup-request"; -@import "onboard-backup-warning"; +@import "../backup-warning"; @import "onboard-disclaimer"; @import "onboard-push-notifications";