diff --git a/src/js/controllers/bitpayCard.js b/src/js/controllers/bitpayCard.js index f92c3e461..56d6750a8 100644 --- a/src/js/controllers/bitpayCard.js +++ b/src/js/controllers/bitpayCard.js @@ -6,13 +6,13 @@ angular.module('copayApp.controllers').controller('bitpayCardController', functi $scope.dateRange = 'last30Days'; $scope.network = bitpayCardService.getEnvironment(); - var getFromCache = function() { + var getFromCache = function(cb) { bitpayCardService.getBitpayDebitCardsHistory($scope.cardId, function(err, data) { - if (err || lodash.isEmpty(data)) return; + if (err || lodash.isEmpty(data)) return cb(); $scope.historyCached = true; self.bitpayCardTransactionHistory = data.transactions; self.bitpayCardCurrentBalance = data.balance; - $scope.$apply(); + return cb(); }); }; @@ -53,7 +53,7 @@ angular.module('copayApp.controllers').controller('bitpayCardController', functi return; } - self.bitpayCardTransactionHistory = history.transactionList; + self.bitpayCardTransactionHistory = history.txs; self.bitpayCardCurrentBalance = history.currentCardBalance; var cacheHistory = { @@ -102,8 +102,9 @@ angular.module('copayApp.controllers').controller('bitpayCardController', functi $state.go('tabs.home'); popupService.showAlert(null, msg); } else { - getFromCache(); - self.update(); + getFromCache(function() { + self.update(); + }); } }); diff --git a/src/js/controllers/bitpayCardIntro.js b/src/js/controllers/bitpayCardIntro.js index 5e26a0218..09ea1a96c 100644 --- a/src/js/controllers/bitpayCardIntro.js +++ b/src/js/controllers/bitpayCardIntro.js @@ -1,6 +1,17 @@ 'use strict'; angular.module('copayApp.controllers').controller('bitpayCardIntroController', function($scope, $state, $timeout, $ionicHistory, storageService, externalLinkService, bitpayCardService, gettextCatalog, popupService) { + var checkOtp = function(obj, cb) { + if (obj.otp) { + var msg = gettextCatalog.getString('Enter Two Factor for BitPay Cards'); + popupService.showPrompt(null, msg, null, function(res) { + cb(res); + }); + } else { + cb(); + } + }; + $scope.$on("$ionicView.beforeEnter", function(event, data) { if (data.stateParams && data.stateParams.secret) { @@ -9,28 +20,31 @@ angular.module('copayApp.controllers').controller('bitpayCardIntroController', f email: data.stateParams.email, otp: data.stateParams.otp }; - bitpayCardService.bitAuthPair(obj, function(err, data) { - if (err) { - popupService.showAlert(null, err); - return; - } - var title = gettextCatalog.getString('Add BitPay Cards?'); - var msg = gettextCatalog.getString('Would you like to add this account ({{email}}) to your wallet?', {email: obj.email}); - var ok = gettextCatalog.getString('Add cards'); - var cancel = gettextCatalog.getString('Go back'); - popupService.showConfirm(title, msg, ok, cancel, function(res) { - if (res) { - // Set flag for nextStep - storageService.setNextStep('BitpayCard', true, function(err) {}); - // Save data - bitpayCardService.setBitpayDebitCards(data, function(err) { - if (err) return; - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.go('tabs.home'); - }); + checkOtp(obj, function(otp) { + obj.otp = otp; + bitpayCardService.bitAuthPair(obj, function(err, data) { + if (err) { + popupService.showAlert(null, err); + return; } + var title = gettextCatalog.getString('Add BitPay Cards?'); + var msg = gettextCatalog.getString('Would you like to add this account ({{email}}) to your wallet?', {email: obj.email}); + var ok = gettextCatalog.getString('Add cards'); + var cancel = gettextCatalog.getString('Go back'); + popupService.showConfirm(title, msg, ok, cancel, function(res) { + if (res) { + // Set flag for nextStep + storageService.setNextStep('BitpayCard', true, function(err) {}); + // Save data + bitpayCardService.setBitpayDebitCards(data, function(err) { + if (err) return; + $ionicHistory.nextViewOptions({ + disableAnimate: true + }); + $state.go('tabs.home'); + }); + } + }); }); }); } else { diff --git a/src/js/controllers/preferencesBitpayCard.js b/src/js/controllers/preferencesBitpayCard.js index 536d4cde6..0fb74d228 100644 --- a/src/js/controllers/preferencesBitpayCard.js +++ b/src/js/controllers/preferencesBitpayCard.js @@ -1,17 +1,17 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesBitpayCardController', - function($scope, $state, $timeout, $ionicHistory, bitpayCardService, popupService) { + function($scope, $state, $timeout, $ionicHistory, bitpayCardService, popupService, gettextCatalog) { - $scope.logout = function() { - var msg = 'Are you sure you would like to log out of your BitPay Card account?'; + $scope.remove = function() { + var msg = gettextCatalog.getString('Are you sure you would like to remove your BitPay Card account from this device?'); popupService.showConfirm(null, msg, null, null, function(res) { - if (res) logout(); + if (res) remove(); }); }; - var logout = function() { - bitpayCardService.logout(function() { + var remove = function() { + bitpayCardService.remove(function() { $ionicHistory.removeBackView(); $timeout(function() { $state.go('tabs.home'); @@ -19,4 +19,11 @@ angular.module('copayApp.controllers').controller('preferencesBitpayCardControll }); }; + $scope.$on("$ionicView.beforeEnter", function(event, data) { + bitpayCardService.getBitpayDebitCards(function(err, data) { + if (err) return; + $scope.bitpayCards = data.cards; + }); + }); + }); diff --git a/src/js/routes.js b/src/js/routes.js index 72c269060..0a841ebe2 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -887,6 +887,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/preferences', views: { 'tab-home@tabs': { + controller: 'preferencesBitpayCardController', templateUrl: 'views/preferencesBitpayCard.html' } } diff --git a/src/js/services/bitpayCardService.js b/src/js/services/bitpayCardService.js index ca0c26b63..7c91bc8a4 100644 --- a/src/js/services/bitpayCardService.js +++ b/src/js/services/bitpayCardService.js @@ -194,15 +194,17 @@ angular.module('copayApp.services').factory('bitpayCardService', function($http, root.getHistory = function(cardId, params, cb) { params = params || {}; var json = {}; -// json = { -// method: 'getInvoiceHistory' -// }; + json = { + method: 'getInvoiceHistory', + params: JSON.stringify(params) + }; root.getBitpayDebitCards(function(err, data) { var card = lodash.find(data.cards, {id : cardId}); if (!card) return cb(_setError('No card available')); // Get invoices -// $http(_postBitAuth('/api/v2/' + card.token, json)).then(function(data) { -// var invoices = data.data.data; + $http(_postBitAuth('/api/v2/' + card.token, json)).then(function(data) { + $log.info('BitPay Get Invoices: SUCCESS'); + var invoices = data.data.data; json = { method: 'getTransactionHistory', params: JSON.stringify(params) @@ -211,14 +213,14 @@ angular.module('copayApp.services').factory('bitpayCardService', function($http, $http(_postBitAuth('/api/v2/' + card.token, json)).then(function(data) { $log.info('BitPay Get Transactions: SUCCESS'); var history = data.data.data || data.data; -// history['txs'] = _processTransactions(invoices, history.transactionList); + history['txs'] = _processTransactions(invoices, history.transactionList); return cb(null, history); }, function(data) { return cb(_setError('BitPay Card Error: Get Transactions', data)); }); -// }, function(data) { -// return cb(_setError('BitPay Card Error: Get Invoices', data)); -// }); + }, function(data) { + return cb(_setError('BitPay Card Error: Get Invoices', data)); + }); }); }; @@ -321,10 +323,13 @@ angular.module('copayApp.services').factory('bitpayCardService', function($http, }); }; - root.logout = function(cb) { + root.remove = function(cb) { _setCredentials(); storageService.removeBitpayDebitCards(credentials.NETWORK, function(err) { - $log.info('BitPay Logout: SUCCESS'); + storageService.removeBitpayDebitCardsHistory(credentials.NETWORK, function(err) { + $log.info('BitPay Debit Cards Removed: SUCCESS'); + return cb(); + }); }); }; diff --git a/www/views/bitpayCard.html b/www/views/bitpayCard.html index 12c972d3e..f0bff2c17 100644 --- a/www/views/bitpayCard.html +++ b/www/views/bitpayCard.html @@ -2,7 +2,7 @@ - BitPay Card + BitPay Visa® Card