From ea93cd6870653ee7d8ee3738b36b8166948fd864 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Tue, 11 Oct 2016 13:06:03 -0300 Subject: [PATCH] handle errors when creating first wallet --- src/js/controllers/onboarding/tour.js | 23 ++++++++++++++++------- src/js/services/popupService.js | 15 ++++++++------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/js/controllers/onboarding/tour.js b/src/js/controllers/onboarding/tour.js index 568d2771b..40225d5e5 100644 --- a/src/js/controllers/onboarding/tour.js +++ b/src/js/controllers/onboarding/tour.js @@ -1,6 +1,6 @@ 'use strict'; angular.module('copayApp.controllers').controller('tourController', - function($scope, $state, $log, $timeout, $filter, ongoingProcess, platformInfo, profileService, rateService) { + function($scope, $state, $log, $timeout, $filter, ongoingProcess, platformInfo, profileService, rateService, popupService, gettextCatalog) { var isCordova = platformInfo.isCordova; var isWP = platformInfo.isWP; @@ -37,6 +37,7 @@ angular.module('copayApp.controllers').controller('tourController', }); }); + var retryCount = 0; $scope.createDefaultWallet = function() { ongoingProcess.set('creatingWallet', true); profileService.createDefaultWallet(function(err, walletClient) { @@ -44,19 +45,27 @@ angular.module('copayApp.controllers').controller('tourController', $log.warn(err); return $timeout(function() { - $log.warn('Retrying to create default wallet......'); - return $scope.createDefaultWallet(); - }, 3000); + $log.warn('Retrying to create default wallet.....:' + ++retryCount); + if (retryCount > 3) { + ongoingProcess.set('creatingWallet', false); + popupService.showAlert( + gettextCatalog.getString('Cannot Create Wallet'), err, + function() { + retryCount = 0; + return $scope.createDefaultWallet(); + }, gettextCatalog.getString('Retry')); + } else { + return $scope.createDefaultWallet(); + } + }, 2000); }; - ongoingProcess.set('creatingWallet', false); var wallet = walletClient; var walletId = wallet.credentials.walletId; if (!usePushNotifications) { $state.go('onboarding.backupRequest', { walletId: walletId }); - } - else { + } else { $state.go('onboarding.notifications', { walletId: walletId }); diff --git a/src/js/services/popupService.js b/src/js/services/popupService.js index 2ca1dfa0f..9045c7b2b 100644 --- a/src/js/services/popupService.js +++ b/src/js/services/popupService.js @@ -6,12 +6,13 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni /*************** Ionic ****************/ - var _ionicAlert = function(title, message, cb) { + var _ionicAlert = function(title, message, cb, buttonName) { if (!cb) cb = function() {}; $ionicPopup.alert({ title: title, subTitle: message, - okType: 'button-clear button-positive' + okType: 'button-clear button-positive', + okText: buttonName || gettextCatalog.getString('OK'), }).then(cb); }; @@ -43,9 +44,9 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni /*************** Cordova ****************/ - var _cordovaAlert = function(title, message, cb) { + var _cordovaAlert = function(title, message, cb, buttonName) { if (!cb) cb = function() {}; - navigator.notification.alert(message, cb, title); + navigator.notification.alert(message, cb, title, buttonName); }; var _cordovaConfirm = function(title, message, okText, cancelText, cb) { @@ -74,14 +75,14 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni * @param {Callback} Function (optional) */ - this.showAlert = function(title, msg, cb) { + this.showAlert = function(title, msg, cb, buttonName) { var message = (msg && msg.message) ? msg.message : msg; $log.warn(title + ": " + message); if (isCordova) - _cordovaAlert(title, message, cb); + _cordovaAlert(title, message, cb, buttonName); else - _ionicAlert(title, message, cb); + _ionicAlert(title, message, cb, buttonName); }; /**