From 91b6d2774b6844af8149c0b15425186e12cc9094 Mon Sep 17 00:00:00 2001 From: Andy Phillipson Date: Mon, 23 Jan 2017 17:01:47 -0500 Subject: [PATCH] Perform deep object verification on bitpayAccounts-v2. Ensure that nextStep for bitpay card is visible when no cards are cached. --- src/js/controllers/tab-home.js | 2 ++ src/js/services/storageService.js | 25 +++++++++++++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index dcd495d89..ea37847b5 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -289,6 +289,8 @@ angular.module('copayApp.controllers').controller('tabHomeController', if (err) return; if (lodash.isEmpty(data)) { $scope.bitpayCards = null; + // Ensure next step for cards is visible + storageService.setNextStep('BitpayCard', 'false', function(err) {}); return; } $scope.bitpayCards = data; diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 6e82d5aa7..5bcf7bd3a 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -200,14 +200,27 @@ angular.module('copayApp.services') var verified = ''; var toRemove = []; _asyncEach(Object.keys(data), function(key, callback) { + // Verify account API data if (!data[key]['bitpayApi-' + network] || - !data[key]['bitpayDebitCards-' + network]) { - // Invalid entry - 'bitpayApi-' key missing - // Invalid entry - 'bitpayDebitCards-' key missing + !data[key]['bitpayApi-' + network].token) { + // Invalid entry - one or more keys are missing toRemove.push(key); - } else { - verified += ' ' + key; - }; + return callback(); + } + // Verify debit cards + if (Array.isArray(data[key]['bitpayDebitCards-' + network])) { + for (var i = 0; i < data[key]['bitpayDebitCards-' + network].length; i++) { + if (!data[key]['bitpayDebitCards-' + network][i].token || + !data[key]['bitpayDebitCards-' + network][i].eid || + !data[key]['bitpayDebitCards-' + network][i].id || + !data[key]['bitpayDebitCards-' + network][i].lastFourDigits) { + // Invalid entry - one or more keys are missing + toRemove.push(key); + return callback(); + } + } + } + verified += ' ' + key; return callback(); }, function() { // done, remove invalid account entrys