From 441bb94e4b18eec5402955f20069ce391f15391d Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Wed, 4 Nov 2015 16:17:04 -0300 Subject: [PATCH] Adds limit to create addresses --- src/js/services/addressService.js | 12 ++++++++++-- src/js/services/bwsError.js | 3 +++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/js/services/addressService.js b/src/js/services/addressService.js index b0432d00a..69884ecde 100644 --- a/src/js/services/addressService.js +++ b/src/js/services/addressService.js @@ -1,7 +1,7 @@ 'use strict'; 'use strict'; angular.module('copayApp.services') - .factory('addressService', function(storageService, profileService, $log, $timeout, lodash, bwsError, gettext) { + .factory('addressService', function(storageService, profileService, $log, $timeout, lodash, bwsError, gettextCatalog) { var root = {}; @@ -28,13 +28,21 @@ angular.module('copayApp.services') client.createAddress(function(err, addr) { if (err) { + var prefix = gettextCatalog.getString('Could not create address'); if (err.error && err.error.match(/locked/gi)) { $log.debug(err.error); return $timeout(function() { root._createAddress(walletId, cb); }, 5000); + } else if (err.code && err.code == 'MAIN_ADDRESS_GAP_REACHED') { + prefix = gettextCatalog.getString('Limit of address generation reached'); + $log.warn(err.message); + client.getMainAddresses({reverse: true, limit : 1}, function(err, addr) { + if (err) return cb(err); + return cb(null, addr[0].address); + }); } - return bwsError.cb(err, gettext('Could not create address'), cb); + return bwsError.cb(err, prefix, cb); } return cb(null, addr.address); }); diff --git a/src/js/services/bwsError.js b/src/js/services/bwsError.js index 896914145..b6055925c 100644 --- a/src/js/services/bwsError.js +++ b/src/js/services/bwsError.js @@ -93,6 +93,9 @@ angular.module('copayApp.services') case 'INVALID_BACKUP': body = gettextCatalog.getString('Wallet seed is invalid'); break; + case 'MAIN_ADDRESS_GAP_REACHED': + body = gettextCatalog.getString('You cannot generate more until you register any activity'); + break; case 'ERROR': body = (err.message || err.error);