diff --git a/js/controllers/create.js b/js/controllers/create.js index 753ca1c8d..65ccb27b9 100644 --- a/js/controllers/create.js +++ b/js/controllers/create.js @@ -41,7 +41,7 @@ angular.module('copayApp.controllers').controller('CreateController', $scope.create = function(form) { if (form && form.$invalid) { - notification.error('Error', 'Please enter the required fields'); + $scope.error = 'Please enter the required fields'; return; } var opts = { @@ -56,7 +56,11 @@ angular.module('copayApp.controllers').controller('CreateController', $rootScope.starting = false; if (err || !wallet) { copay.logger.debug(err); - $scope.error = 'Could not create wallet.' + err; + if (err.match('OVERQUOTA')){ + $scope.error = 'Could not create wallet: storage limits on remove server exceeded'; + } else { + $scope.error = 'Could not create wallet: ' + err; + } } $rootScope.$digest() }); diff --git a/js/controllers/home.js b/js/controllers/home.js index c5da16cc0..4458de5b5 100644 --- a/js/controllers/home.js +++ b/js/controllers/home.js @@ -46,11 +46,13 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc } else { $scope.error = 'Unknown error'; } + $scope.done(); } if (iden) { iden.on('newWallet', $scope.done); iden.on('noWallets', $scope.done); + iden.openWallets(); } }); } diff --git a/js/controllers/profile.js b/js/controllers/profile.js index 92238910c..c6c7cc355 100644 --- a/js/controllers/profile.js +++ b/js/controllers/profile.js @@ -19,8 +19,9 @@ angular.module('copayApp.controllers').controller('ProfileController', function( identityService.deleteWallet(w, function(err) { $scope.loading = false; if (err) { - log.warn(err); + copay.logger.warn(err); } + $scope.setWallets(); }); }; diff --git a/js/models/Identity.js b/js/models/Identity.js index 23329ca77..1717204c6 100644 --- a/js/models/Identity.js +++ b/js/models/Identity.js @@ -592,11 +592,10 @@ Identity.prototype.deleteWallet = function(walletId, cb) { delete this.focusedTimestamps[walletId]; this.storage.removeItem(Wallet.getStorageKey(walletId), function(err) { - if (err) { - return cb(err); - } + if (err) return cb(err); self.emitAndKeepAlive('deletedWallet', walletId); self.store(null, cb); + return cb(); }); }; diff --git a/js/plugins/InsightStorage.js b/js/plugins/InsightStorage.js index 2492cde5f..8eea6cadf 100644 --- a/js/plugins/InsightStorage.js +++ b/js/plugins/InsightStorage.js @@ -47,7 +47,7 @@ InsightStorage.prototype.getItem = function(name, callback) { var self = this; this._makeGetRequest(passphrase, name, function(err, body) { - if (err) log.info('[InsightStorage. err]', err); + if (err) log.warn(err); if (err && err.indexOf('PNOTFOUND') !== -1 && mayBeOldPassword(self.password)) { return self._brokenGetItem(name, callback); } @@ -87,6 +87,7 @@ InsightStorage.prototype._makeGetRequest = function(passphrase, key, callback) { }; this.request.get(getParams, function(err, response, body) { +console.log('[InsightStorage.js.89:response:]',response); //TODO if (err) { return callback('Connection error'); } @@ -172,16 +173,39 @@ InsightStorage.prototype.setItem = function(name, value, callback) { } if (response.statusCode === 409) { return callback('BADCREDENTIALS: Invalid username or password'); - } - if (response.statusCode !== 200) { + } else if (response.statusCode === 406) { + return callback('OVERQUOTA: Quota exceeded'); + } else if (response.statusCode !== 200) { return callback('Unable to store data on insight'); } return callback(); }); }; -InsightStorage.prototype.removeItem = function(name, callback) { - this.setItem(name, '', callback); +InsightStorage.prototype.removeItem = function(key, callback) { + var passphrase = this.getPassphrase(); + var authHeader = new buffers.Buffer(this.email + ':' + passphrase).toString('base64'); + var deleteUrl = this.storeUrl + '/delete/item'; + var getParams = { + url: deleteUrl + '?' + querystring.encode({ + key: key + }), + headers: { + 'Authorization': authHeader + } + }; + log.debug('erase ' + name); + this.request.get(getParams, function(err, response, body) { + if (err) { + return callback('Connection error'); + } + if (response.statusCode === 409) { + return callback('BADCREDENTIALS: Invalid username or password'); + } else if (response.statusCode !== 200) { + return callback('Unable to remove data on insight'); + } + return callback(); + }); }; InsightStorage.prototype.clear = function(callback) { diff --git a/js/services/identityService.js b/js/services/identityService.js index 6fb1cd0aa..0fab2fe65 100644 --- a/js/services/identityService.js +++ b/js/services/identityService.js @@ -82,8 +82,7 @@ angular.module('copayApp.services') copay.Identity.open(opts, function(err, iden) { if (err) return cb(err); root.bind(iden); - iden.openWallets(); - return cb(); + return cb(null, iden); }); }; @@ -247,7 +246,6 @@ angular.module('copayApp.services') copay.logger.debug('newWallet:', w.getName(), wid, iden.getLastFocusedWalletId()); root.installWalletHandlers(w); if (wid == iden.getLastFocusedWalletId()) { - $rootScope.starting = false; copay.logger.debug('GOT Focused wallet:', w.getName()); root.setFocusedWallet(w, true); root.goWalletHome(); diff --git a/views/create.html b/views/create.html index b7ff312ff..617ab6ab6 100644 --- a/views/create.html +++ b/views/create.html @@ -19,6 +19,16 @@
+
+
+ +
+ + {{error|translate}} + +
+ +