From ca7ec8e392a4240dc7cac1570e1a4c15ab20e8b0 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 28 Oct 2015 16:19:16 -0300 Subject: [PATCH 1/2] Handle error when the device id mismatch --- src/js/controllers/index.js | 11 +++++++---- src/js/routes.js | 6 +++--- src/js/services/storageService.js | 10 ++++++++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 988228bd5..d25dde533 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -787,8 +787,12 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.showAlert = { msg: msg, close: function(err) { - self.showAlert = null; - if (cb) return cb(err); + if (self.isCordova && navigator && navigator.app) { + navigator.app.exitApp(); + } else { + self.showAlert = null; + if (cb) return cb(err); + } }, }; $timeout(function() { @@ -1045,13 +1049,12 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.needsBackup = false; $log.debug('Backup done'); storageService.setBackupFlag(self.walletId, function(err) { - if (err) root.showErrorPopup(err); $log.debug('Backup done stored'); }); }); $rootScope.$on('Local/DeviceError', function(event, err) { - root.showErrorPopup(err); + self.showErrorPopup(err); }); $rootScope.$on('Local/WalletImported', function(event, walletId) { diff --git a/src/js/routes.js b/src/js/routes.js index f6d58c84e..1533ba74a 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -515,10 +515,10 @@ angular // Try to open local profile profileService.loadAndBindProfile(function(err) { if (err) { - if (err.message.match('NOPROFILE')) { + if (err.message && err.message.match('NOPROFILE')) { $log.debug('No profile... redirecting'); $state.transitionTo('splash'); - } else if (err.message.match('NONAGREEDDISCLAIMER')) { + } else if (err.message && err.message.match('NONAGREEDDISCLAIMER')) { $log.debug('Display disclaimer... redirecting'); $state.transitionTo('disclaimer'); } else { @@ -545,4 +545,4 @@ angular }, 50); } }); - }); \ No newline at end of file + }); diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index bff7c9ec6..ec246abfe 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -41,15 +41,21 @@ angular.module('copayApp.services') json = JSON.parse(text); } catch (e) {}; + if (!json) return cb('Could not access storage') + if (!json.iter || !json.ct) return cb(null, text); $log.debug('Profile is encrypted'); getUUID(function(uuid) { if (!uuid) - return cb(new Error('Could not decrypt localstorage profile')); + return cb('Could not decrypt storage: could not get device ID'); - text = sjcl.decrypt(uuid, text); + try { + text = sjcl.decrypt(uuid, text); + } catch(e) { + return cb('Could not decrypt storage: device ID mismatch'); + }; return cb(null, text); }); }; From 015e7a788e6a7125d7b3e41ce1668609c8733648 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 28 Oct 2015 16:39:02 -0300 Subject: [PATCH 2/2] Fix showErrorPopup --- src/js/controllers/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index d25dde533..80c1c53f0 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -787,12 +787,8 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.showAlert = { msg: msg, close: function(err) { - if (self.isCordova && navigator && navigator.app) { - navigator.app.exitApp(); - } else { - self.showAlert = null; - if (cb) return cb(err); - } + self.showAlert = null; + if (cb) return cb(err); }, }; $timeout(function() { @@ -1054,7 +1050,11 @@ angular.module('copayApp.controllers').controller('indexController', function($r }); $rootScope.$on('Local/DeviceError', function(event, err) { - self.showErrorPopup(err); + self.showErrorPopup(err, function() { + if (self.isCordova && navigator && navigator.app) { + navigator.app.exitApp(); + } + }); }); $rootScope.$on('Local/WalletImported', function(event, walletId) {