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/config-template.xml b/app-template/config-template.xml index 3596fc947..5a72f4560 100644 --- a/app-template/config-template.xml +++ b/app-template/config-template.xml @@ -32,7 +32,6 @@ - @@ -57,7 +56,9 @@ - + + + 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..5cf80a4af 100644 --- a/src/js/controllers/preferencesNotifications.js +++ b/src/js/controllers/preferencesNotifications.js @@ -9,13 +9,17 @@ angular.module('copayApp.controllers').controller('preferencesNotificationsContr var isCordova = platformInfo.isCordova; var isIOS = platformInfo.isIOS; + $scope.appName = $window.appConfig.nameCase; $scope.PNEnabledByUser = true; $scope.isIOSApp = isIOS && isCordova; if ($scope.isIOSApp) { - cordova.plugins.diagnostic.isRemoteNotificationsEnabled(function(isEnabled) { - $scope.PNEnabledByUser = isEnabled; - $scope.$digest(); - }); + try { + PushNotification.hasPermission(function(data) { + $scope.PNEnabledByUser = data.isEnabled; + }); + } catch(e) { + $log.error(e); + }; } $scope.pushNotifications = { @@ -23,15 +27,8 @@ angular.module('copayApp.controllers').controller('preferencesNotificationsContr }; }; - $scope.openSettings = function() { - cordova.plugins.diagnostic.switchToSettings(function() { - $log.debug('switched to settings'); - }, function(err) { - $log.debug(err); - }); - }; - $scope.pushNotificationsChange = function() { + if (!$scope.pushNotifications) return; var opts = { pushNotifications: { enabled: $scope.pushNotifications.value @@ -39,9 +36,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..659f9dd8f 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(); }); @@ -317,6 +318,8 @@ angular.module('copayApp.services') var defaults = configService.getDefaults(); var push = pushNotificationsService.init(root.wallet); + if (!push) return; + push.on('notification', function(data) { if (!data.additionalData.foreground) { $log.debug('Push notification event: ', data.message); diff --git a/src/js/services/pushNotificationsService.js b/src/js/services/pushNotificationsService.js index f6c621415..904ae4246 100644 --- a/src/js/services/pushNotificationsService.js +++ b/src/js/services/pushNotificationsService.js @@ -11,10 +11,14 @@ angular.module('copayApp.services') root.init = function(walletsClients) { var defaults = configService.getDefaults(); - var push = PushNotification.init(defaults.pushNotifications.config); + try { + var push = PushNotification.init(defaults.pushNotifications.config); + } catch(e) { + $log.error(e); + return; + }; 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 +35,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 @@ - - - diff --git a/www/views/preferencesNotifications.html b/www/views/preferencesNotifications.html index 8b54a93e2..7385fd380 100644 --- a/www/views/preferencesNotifications.html +++ b/www/views/preferencesNotifications.html @@ -18,11 +18,8 @@
Notifications
- Push notifications for Copay are currently disabled. Enable them in the Settings app. + Push notifications for {{appName}} are currently disabled. Enable them in the Settings app.
- - Open Settings app -