diff --git a/public/index.html b/public/index.html index 3e763dc79..a9c4def93 100644 --- a/public/index.html +++ b/public/index.html @@ -18,7 +18,7 @@ ng-controller="indexController as index" ng-swipe-disable-mouse ng-swipe-left="index.closeMenu()" - ng-swipe-right="index.agreeDisclaimer() ? index.openMenu() : null"> + ng-swipe-right="index.disclaimerAccepted ? index.openMenu() : null">
diff --git a/public/views/disclaimer.html b/public/views/disclaimer.html index b8bc3efb4..19b9e40f9 100644 --- a/public/views/disclaimer.html +++ b/public/views/disclaimer.html @@ -1,56 +1,54 @@
-
-
-
- icon + ng-controller="disclaimerController as disclaimer" ng-init="disclaimer.init()"> +
+
+ icon +
+
+
+ WELCOME TO COPAY +

A multisignature bitcoin wallet

-
-
- WELCOME TO COPAY -

A multisignature bitcoin wallet

-
-
-
-
-

-

Terms of Use
-
-

-
-
-
- - +
+
+

+

Terms of Use
+

-
-

I affirm that I have read, understood, and agree with these terms.

-
-
+
+
-
- {{(error)|translate}}. Retrying... -
-
-
-
-
-
-
-
-
-
- Creating Profile... -
+ +
+

I affirm that I have read, understood, and agree with these terms.

+
+
+ +
+ {{(error)|translate}}. Retrying...
-
- +
+
+
+
+
+
+
+
+ Creating Profile... +
+
+
+
diff --git a/src/js/controllers/disclaimer.js b/src/js/controllers/disclaimer.js index c26ddcb30..cce17f5f9 100644 --- a/src/js/controllers/disclaimer.js +++ b/src/js/controllers/disclaimer.js @@ -3,14 +3,12 @@ angular.module('copayApp.controllers').controller('disclaimerController', function($scope, $timeout, $log, profileService, isCordova, storageService, applicationService, gettextCatalog, uxLanguage, go) { self = this; - $scope.lang = uxLanguage.currentLanguage; $scope.goHome = function() { $scope.error = ""; profileService.storeDisclaimer(function(err) { if (err) { $scope.error = err; - $log.warn(err); $scope.$apply(); } else go.walletHome(); }); @@ -35,13 +33,16 @@ angular.module('copayApp.controllers').controller('disclaimerController', }); }; - storageService.getProfile(function(err, profile) { - if (!profile) create(); - else $scope.creatingProfile = false; + this.init = function() { + self.lang = uxLanguage.currentLanguage; + storageService.getProfile(function(err, profile) { + if (!profile) create(); + else $scope.creatingProfile = false; - //compatible - storageService.getCopayDisclaimerFlag(function(err, val) { - if (val) go.walletHome(); + //compatible + profileService.checkDisclaimer(function(val) { + if (val) go.walletHome(); + }); }); - }); + }; }); diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index f90539b99..780dcd5d6 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -126,26 +126,21 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.initGlidera(); self.setCustomBWSFlag(); - if (fc.isPrivKeyExternal()) { - self.needsBackup = false; - self.openWallet(); - } else { - storageService.getBackupFlag(self.walletId, function(err, val) { - if (!fc.credentials.mnemonic) - self.needsBackup = false; - else - self.needsBackup = self.network == 'testnet' ? false : !val; + profileService.checkDisclaimer(function(v) { + if (v) self.disclaimerAccepted = true; + if (fc.isPrivKeyExternal()) { + self.needsBackup = false; self.openWallet(); - }); - } - }); - }; - - self.agreeDisclaimer = function() { - storageService.getProfile(function(err, profile) { - if (profile && profile.agreeDisclaimer) - return profile.agreeDisclaimer; - return null; + } else { + storageService.getBackupFlag(self.walletId, function(err, val) { + if (!fc.credentials.mnemonic) + self.needsBackup = false; + else + self.needsBackup = self.network == 'testnet' ? false : !val; + self.openWallet(); + }); + } + }); }); }; @@ -1168,10 +1163,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r }); }); - $rootScope.$on('Local/NewFocusedWallet', function() { - self.setUxLanguage(); - }); - $rootScope.$on('Local/LanguageSettingUpdated', function() { self.setUxLanguage(); self.updateRemotePreferences({ @@ -1229,6 +1220,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r $rootScope.$on('Local/Resume', function(event) { $log.debug('### Resume event'); + if (!self.disclaimerAccepted) go.path('disclaimer'); self.debouncedUpdate(); }); @@ -1348,14 +1340,11 @@ angular.module('copayApp.controllers').controller('indexController', function($r }); $rootScope.$on('Local/NewFocusedWallet', function() { + self.setUxLanguage(); self.setFocusedWallet(); self.updateTxHistory(); - storageService.getProfile(function(err, profile) { - if (profile && profile.agreeDisclaimer) go.walletHome(); - - //compatible - storageService.getCopayDisclaimerFlag(function(err, val) { - if (val) go.walletHome(); + if (self.disclaimerAccepted) go.walletHome(); + storageService.getCleanAndScanAddresses(function(err, walletId) { if (walletId && profileService.walletClients[walletId]) { $log.debug('Clear last address cache and Scan ', walletId); @@ -1365,8 +1354,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r storageService.removeCleanAndScanAddresses(function() {}); } }); - }); - }); }); $rootScope.$on('Local/SetTab', function(event, tab, reset) { diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 317d48aa5..9c1bcbb23 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -134,6 +134,11 @@ angular.module('copayApp.services') }; root.loadAndBindProfile = function(cb) { + root.checkDisclaimer(function(val) { + if (!val) { + return cb(new Error('NONAGREEDDISCLAIMER: Non agreed disclaimer')); + } + else { storageService.getProfile(function(err, profile) { if (err) { $rootScope.$emit('Local/DeviceError', err); @@ -150,13 +155,10 @@ angular.module('copayApp.services') return root.bindProfile(profile, cb); }) } else { - storageService.getCopayDisclaimerFlag(function(err, val) { - if (!profile.agreeDisclaimer) { - if (!val) return cb(new Error('NONAGREEDDISCLAIMER: Non agreed disclaimer')); - } - $log.debug('Profile read'); - return root.bindProfile(profile, cb); - }); + $log.debug('Profile read'); + return root.bindProfile(profile, cb); + } + }); } }); }; @@ -521,11 +523,35 @@ angular.module('copayApp.services') root.storeDisclaimer = function(cb) { storageService.getProfile(function(err, profile) { profile.agreeDisclaimer = true; - storageService.storeProfile(profile, function() { + storageService.storeProfile(profile, function(err) { return cb(err); }); }); - } + }; + + root.checkDisclaimer = function(cb) { + if (root.profile && root.profile.agreeDisclaimer) return cb(true); + storageService.getProfile(function(err, profile) { + if (profile && profile.agreeDisclaimer) + return cb(true); + else if (profile && !profile.agreeDisclaimer) { + storageService.getCopayDisclaimerFlag(function(err, val) { + if (val) { + root.storeDisclaimer(function(err) { + if (err) $log.error(err); + return cb(true); + }); + } + else { + return cb(); + } + }); + } + else { + return cb(); + } + }); + }; root.importLegacyWallet = function(username, password, blob, cb) { var walletClient = bwcService.getClient();