diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 032a3f663..b2326d67a 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -13,28 +13,35 @@ angular.module('copayApp.controllers').controller('indexController', function($r document.addEventListener('deviceready', function() { - if (isCordova) { - var push = PushNotification.init({ - android: { - senderID: "959259672122" - }, - ios: { - alert: "true", - badge: true, - sound: 'false' - }, - windows: {} + if (self.isCordova) { + storageService.getDeviceToken(function(err, token) { + if (!token) pushNotificationInit(); }); } + }); + + function pushNotificationInit() { + var push = PushNotification.init({ + android: { + senderID: "959259672122" + }, + ios: { + alert: "true", + badge: true, + sound: 'false' + }, + windows: {} + }); + push.on('registration', function(data) { var fc = profileService.focusedClient; var opts = {}; - var deviceType = (navigator.userAgent.match(/iPhone/i)) == "iPhone" ? "ios" : (navigator.userAgent.match(/Android/i)) == "Android" ? "android" : null; - opts.user = fc.credentials.copayerId + "||" + fc.credentials.walletId; - opts.type = deviceType; + opts.user = fc.credentials.walletId; + opts.type = (navigator.userAgent.match(/iPhone/i)) == "iPhone" ? "ios" : (navigator.userAgent.match(/Android/i)) == "Android" ? "android" : null; opts.token = data.registrationId; - storageService.setNotificationsOptions(JSON.stringify(opts), function() { + + storageService.setDeviceToken(data.registrationId, function() { pushNotificationsService.subscribe(opts).then(function(response) { $log.debug('Suscribed: ' + response.status); }, @@ -59,8 +66,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r push.on('error', function(e) { $log.warn('Error trying to push notifications: ', e); }); - - }); + } function strip(number) { return (parseFloat(number.toPrecision(12))); @@ -1249,8 +1255,13 @@ angular.module('copayApp.controllers').controller('indexController', function($r }); $rootScope.$on('Local/EnableNotifications', function(event, val) { - storageService.getNotificationsOptions(function(err, opts) { - if (val.notifications.enabled) { + storageService.getDeviceToken(function(err, token) { + var fc = profileService.focusedClient; + var opts = {}; + opts.user = [fc.credentials.walletId]; + opts.type = (navigator.userAgent.match(/iPhone/i)) == "iPhone" ? "ios" : (navigator.userAgent.match(/Android/i)) == "Android" ? "android" : null; + opts.token = token; + if (val) { pushNotificationsService.subscribe(opts).then(function(response) { $log.debug('Suscribed: ' + response.status); }, @@ -1258,7 +1269,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r $log.warn('Error: ' + err); }); } else { - pushNotificationsService.unsubscribe(JSON.parse(opts).token).then(function(response) { + pushNotificationsService.unsubscribe(token).then(function(response) { $log.debug('Unsuscribed: ' + response.status); }, function(err) { diff --git a/src/js/controllers/preferencesGlobal.js b/src/js/controllers/preferencesGlobal.js index bfb90ddb5..e04f935a5 100644 --- a/src/js/controllers/preferencesGlobal.js +++ b/src/js/controllers/preferencesGlobal.js @@ -41,7 +41,7 @@ angular.module('copayApp.controllers').controller('preferencesGlobalController', } }; configService.set(opts, function(err) { - $rootScope.$emit('Local/EnableNotifications', opts); + $rootScope.$emit('Local/EnableNotifications', opts.notifications.enabled); if (err) $log.debug(err); }); }); diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 8c4a284eb..e10db0d49 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -118,7 +118,7 @@ angular.module('copayApp.services') root.bindProfile = function(profile, cb) { root.profile = profile; - + configService.get(function(err) { $log.debug('Preferences read'); if (err) return cb(err); @@ -128,20 +128,19 @@ angular.module('copayApp.services') root._setFocus(focusedWalletId, function() { $rootScope.$emit('Local/ProfileBound'); root.isDisclaimerAccepted(function(val) { - if (!val) { + if (!val) { return cb(new Error('NONAGREEDDISCLAIMER: Non agreed disclaimer')); - } - else { + } else { return cb(); } }); }); }); }); - + }; - root.loadAndBindProfile = function(cb) { + root.loadAndBindProfile = function(cb) { storageService.getProfile(function(err, profile) { if (err) { $rootScope.$emit('Local/DeviceError', err); @@ -398,6 +397,7 @@ angular.module('copayApp.services') handleImport(function() { root.setAndStoreFocus(walletId, function() { storageService.storeProfile(root.profile, function(err) { + $rootScope.$emit('Local/EnableNotifications', true); return cb(err, walletId); }); }); @@ -542,16 +542,14 @@ angular.module('copayApp.services') if (err) $log.error(err); return cb(true); }); - } - else { + } else { return cb(); } }); - } - else { + } else { return cb(); } - }); + }); }; root.importLegacyWallet = function(username, password, blob, cb) { diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 175e06b52..940a4943d 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -231,12 +231,12 @@ angular.module('copayApp.services') storage.get('addressbook-' + network, cb); }; - root.setNotificationsOptions = function(opts, cb) { - storage.set('notifications', opts, cb); + root.setDeviceToken = function(token, cb) { + storage.set('token', token, cb); } - root.getNotificationsOptions = function(cb) { - storage.get('notifications', cb); + root.getDeviceToken = function(cb) { + storage.get('token', cb); } root.removeAddressbook = function(network, cb) {