diff --git a/app-template/bitcoincom/appConfig.json b/app-template/bitcoincom/appConfig.json index 428b5f768..ba27acef1 100644 --- a/app-template/bitcoincom/appConfig.json +++ b/app-template/bitcoincom/appConfig.json @@ -24,8 +24,8 @@ "windowsAppId": "804636ee-b017-4cad-8719-e58ac97ffa5c", "pushSenderId": "1036948132229", "description": "A Secure Bitcoin Wallet", - "version": "4.7.3", - "androidVersion": "407300", + "version": "4.8.0", + "androidVersion": "408000", "_extraCSS": "", "_enabledExtensions": { "coinbase": false, diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index f4ba907a6..e14c49cd1 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -84,6 +84,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', $scope.$on("$ionicView.enter", function(event, data) { $ionicNavBarDelegate.showBar(true); updateAllWallets(); + profileService.initBitcoinCoreDisplay(); addressbookService.list(function(err, ab) { if (err) $log.error(err); diff --git a/src/js/routes.js b/src/js/routes.js index 007bb6e83..4aff2e459 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -1315,7 +1315,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr $timeout(function() { emailService.init(); // Update email subscription if necessary openURLService.init(); - profileService.initBitcoinCoreDisplay(); }, 1000); }); }); diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 630c7ee69..2d543259b 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -1038,27 +1038,39 @@ angular.module('copayApp.services') }; root.initBitcoinCoreDisplay = function() { + console.log('Init Bitcoin Core Display...'); storageService.checkIfFlagIsSet('displayBitcoinCoreFlag').then(function(result) { if (!result) { var walletsBtc = root.getWallets({coin: 'btc'}); var totalBtc = 0; + var errorBalance = false; - walletsBtc.forEach(function(value, key, index) { - totalBtc += parseFloat(value.cachedBalance); - }); - - var enableDisplayBitcoinCore = totalBtc > 0 ? true : false; + if (walletsBtc.length > 0) { + walletsBtc.forEach(function(value, key, index) { + // Do not trust cachedBalance as it is added asynchronously. Manually call getLastKnownBalance for each wallet ID + root.getLastKnownBalance(value.id, function(err, data) { + if (data) { + var balanceData = JSON.parse(data); + totalBtc += parseFloat(balanceData.balance); + } else { + errorBalance = true; + } + }); + }); - var opts = { - displayBitcoinCore: { - enabled: enableDisplayBitcoinCore - } - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); + var enableDisplayBitcoinCore = (totalBtc > 0) && !errorBalance ? true : false; - storageService.activateDisplayBitcoinCoreFlag(); + var opts = { + displayBitcoinCore: { + enabled: enableDisplayBitcoinCore + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + + if (!errorBalance) storageService.activateDisplayBitcoinCoreFlag(); + } } }); };