diff --git a/app-template/bitpay/appConfig.json b/app-template/bitpay/appConfig.json index 44be954ac..3c0ee862b 100644 --- a/app-template/bitpay/appConfig.json +++ b/app-template/bitpay/appConfig.json @@ -17,6 +17,7 @@ "winAppName": "BitPayWallet", "wpPublisherId": "{}", "wpProductId": "{}", + "pushSenderId": "1036948132229", "description": "Secure Bitcoin Storage", "version": "0.14.0", "androidVersion": "1", diff --git a/app-template/copay/appConfig.json b/app-template/copay/appConfig.json index 66bb79585..7a6ee7ef3 100644 --- a/app-template/copay/appConfig.json +++ b/app-template/copay/appConfig.json @@ -17,6 +17,7 @@ "winAppName": "CopayWallet", "wpPublisherId": "{31cdd08b-457c-413d-b440-f6665eec847d}", "wpProductId": "{5381aa50-9069-11e4-84cc-293caf9cbdc8}", + "pushSenderId": "1036948132229", "description": "A Secure Bitcoin Wallet", "version": "2.5.0", "androidVersion": "115", diff --git a/src/js/controllers/onboarding/notifications.js b/src/js/controllers/onboarding/notifications.js index a2444abf0..a2c8346e5 100644 --- a/src/js/controllers/onboarding/notifications.js +++ b/src/js/controllers/onboarding/notifications.js @@ -1,13 +1,32 @@ 'use strict'; -angular.module('copayApp.controllers').controller('notificationsController', function($scope, $state, $stateParams, profileService) { +angular.module('copayApp.controllers').controller('notificationsController', function($scope, $state, $timeout, $stateParams, profileService, configService) { + + $scope.$on("$ionicView.enter", function(event, data) { + $scope.walletId = data.stateParams.walletId; + }); - $scope.walletId = $stateParams.walletId; $scope.allowNotif = function() { - profileService.pushNotificationsInit(); + $timeout(function() { + profileService.pushNotificationsInit(); + }); $state.go('onboarding.backupRequest', { walletId: $scope.walletId }); } + $scope.disableNotif = function() { + var opts = { + pushNotifications: { + enabled: false + } + }; + configService.set(opts, function(err) { + if (err) $log.warn(err); + $state.go('onboarding.backupRequest', { + walletId: $scope.walletId + }); + }); + }; + }); diff --git a/src/js/controllers/onboarding/tour.js b/src/js/controllers/onboarding/tour.js index aa2cdd92e..568d2771b 100644 --- a/src/js/controllers/onboarding/tour.js +++ b/src/js/controllers/onboarding/tour.js @@ -1,28 +1,40 @@ 'use strict'; angular.module('copayApp.controllers').controller('tourController', - function($scope, $state, $log, $timeout, $filter, ongoingProcess, profileService, rateService) { + function($scope, $state, $log, $timeout, $filter, ongoingProcess, platformInfo, profileService, rateService) { - var tries = 0; + var isCordova = platformInfo.isCordova; + var isWP = platformInfo.isWP; + var usePushNotifications = isCordova && !isWP; - $scope.init = function() { - $scope.data = { - index: 0 - }; - - $scope.options = { - loop: false, - effect: 'flip', - speed: 500, - spaceBetween: 100 - } + $scope.data = { + index: 0 }; - rateService.whenAvailable(function() { - var localCurrency = 'USD'; - var btcAmount = 1; - var rate = rateService.toFiat(btcAmount * 1e8, localCurrency); - $scope.localCurrencySymbol = '$'; - $scope.localCurrencyPerBtc = $filter('formatFiatAmount')(parseFloat(rate.toFixed(2), 10)); + $scope.options = { + loop: false, + effect: 'flip', + speed: 500, + spaceBetween: 100 + } + + $scope.$on("$ionicSlides.sliderInitialized", function(event, data) { + $scope.slider = data.slider; + }); + + $scope.$on("$ionicSlides.slideChangeStart", function(event, data) { + $scope.data.index = data.slider.activeIndex; + }); + + $scope.$on("$ionicSlides.slideChangeEnd", function(event, data) {}); + + $scope.$on("$ionicView.enter", function(event, data) { + rateService.whenAvailable(function() { + var localCurrency = 'USD'; + var btcAmount = 1; + var rate = rateService.toFiat(btcAmount * 1e8, localCurrency); + $scope.localCurrencySymbol = '$'; + $scope.localCurrencyPerBtc = $filter('formatFiatAmount')(parseFloat(rate.toFixed(2), 10)); + }); }); $scope.createDefaultWallet = function() { @@ -33,21 +45,22 @@ angular.module('copayApp.controllers').controller('tourController', return $timeout(function() { $log.warn('Retrying to create default wallet......'); - if (tries == 3) { - tries == 0; - return $scope.createDefaultWallet(); - } else { - tries += 1; - return $scope.createDefaultWallet(); - } + return $scope.createDefaultWallet(); }, 3000); }; ongoingProcess.set('creatingWallet', false); var wallet = walletClient; - $state.go('onboarding.collectEmail', { - fromOnboarding: true, - walletId: wallet.credentials.walletId - }); + var walletId = wallet.credentials.walletId; + if (!usePushNotifications) { + $state.go('onboarding.backupRequest', { + walletId: walletId + }); + } + else { + $state.go('onboarding.notifications', { + walletId: walletId + }); + } }); }; @@ -60,14 +73,4 @@ angular.module('copayApp.controllers').controller('tourController', if ($scope.data.index != 2) $scope.slider.slideNext(); else $state.go('onboarding.welcome'); } - - $scope.$on("$ionicSlides.sliderInitialized", function(event, data) { - $scope.slider = data.slider; - }); - - $scope.$on("$ionicSlides.slideChangeStart", function(event, data) { - $scope.data.index = data.slider.activeIndex; - }); - - $scope.$on("$ionicSlides.slideChangeEnd", function(event, data) {}); }); diff --git a/src/js/controllers/preferencesNotifications.js b/src/js/controllers/preferencesNotifications.js index 8d947dde8..10ce21a4f 100644 --- a/src/js/controllers/preferencesNotifications.js +++ b/src/js/controllers/preferencesNotifications.js @@ -39,9 +39,9 @@ angular.module('copayApp.controllers').controller('preferencesNotificationsContr }; configService.set(opts, function(err) { if (opts.pushNotifications.enabled) - pushNotificationsService.enableNotifications(profileService.walletClients); + profileService.pushNotificationsInit(); else - pushNotificationsService.disableNotifications(profileService.walletClients); + pushNotificationsService.disableNotifications(profileService.getWallets()); if (err) $log.debug(err); }); }; diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 30563208b..5a6cfc88e 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -296,7 +296,8 @@ angular.module('copayApp.services') if (!val) { return cb(new Error('NONAGREEDDISCLAIMER: Non agreed disclaimer')); } - if (usePushNotifications) + var config = configService.getSync(); + if (config.pushNotifications.enabled && usePushNotifications) root.pushNotificationsInit(); return cb(); }); diff --git a/src/js/services/pushNotificationsService.js b/src/js/services/pushNotificationsService.js index f6c621415..57d9d5ddd 100644 --- a/src/js/services/pushNotificationsService.js +++ b/src/js/services/pushNotificationsService.js @@ -14,7 +14,6 @@ angular.module('copayApp.services') var push = PushNotification.init(defaults.pushNotifications.config); push.on('registration', function(data) { - if (root.token) return; $log.debug('Starting push notification registration'); root.token = data.registrationId; var config = configService.getSync(); @@ -31,7 +30,7 @@ angular.module('copayApp.services') if (!config.pushNotifications.enabled) return; if (!root.token) { - $log.warn('No token available for this device. Cannot set push notifications'); + $log.warn('No token available for this device. Cannot set push notifications. Needs registration.'); return; } diff --git a/www/views/onboarding/notifications.html b/www/views/onboarding/notifications.html index 8d03866ca..dac81fdf9 100644 --- a/www/views/onboarding/notifications.html +++ b/www/views/onboarding/notifications.html @@ -5,7 +5,7 @@
- +
diff --git a/www/views/onboarding/tour.html b/www/views/onboarding/tour.html index 9135e5217..de836e0c9 100644 --- a/www/views/onboarding/tour.html +++ b/www/views/onboarding/tour.html @@ -1,4 +1,4 @@ - + @@ -6,9 +6,6 @@ - - -