diff --git a/src/js/controllers/advancedSettings.js b/src/js/controllers/advancedSettings.js index a5eefbde3..9355dd730 100644 --- a/src/js/controllers/advancedSettings.js +++ b/src/js/controllers/advancedSettings.js @@ -13,6 +13,9 @@ angular.module('copayApp.controllers').controller('advancedSettingsController', $scope.hideNextSteps = { value: config.hideNextSteps.enabled }; + $scope.displayBitcoinCoreEnabled = { + value: config.displayBitcoinCore.enabled + }; }; @@ -49,6 +52,17 @@ angular.module('copayApp.controllers').controller('advancedSettingsController', }); }; + $scope.displayBitcoinCoreChange = function() { + var opts = { + displayBitcoinCore: { + enabled: $scope.displayBitcoinCoreEnabled.value + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + }; + $scope.$on("$ionicView.beforeEnter", function(event, data) { $scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; updateConfig(); diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index 83e7ecde7..f4ba907a6 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -123,6 +123,8 @@ angular.module('copayApp.controllers').controller('tabHomeController', $scope.nextStepsItems = nextStepsService.get(); } + $scope.displayBitcoinCore = config.displayBitcoinCore.enabled; + $scope.showServices = true; pushNotificationsService.init(); firebaseEventsService.init(); @@ -317,4 +319,10 @@ angular.module('copayApp.controllers').controller('tabHomeController', }, 300); updateAllWallets(); }; + + $rootScope.$on('Local/SettingsUpdated', function(e, walletId) { + configService.whenAvailable(function(config) { + $scope.displayBitcoinCore = config.displayBitcoinCore.enabled; + }); + }); }); diff --git a/src/js/controllers/tab-send.js b/src/js/controllers/tab-send.js index 3e4428096..4425363cf 100644 --- a/src/js/controllers/tab-send.js +++ b/src/js/controllers/tab-send.js @@ -53,7 +53,7 @@ angular.module('copayApp.controllers').controller('tabSendController', function( }; var updateWalletsList = function() { - + var config = configService.getSync(); var networkResult = lodash.countBy($scope.wallets, 'network'); $scope.showTransferCard = $scope.hasWallets && (networkResult.livenet > 1 || networkResult.testnet > 1); @@ -79,12 +79,14 @@ angular.module('copayApp.controllers').controller('tabSendController', function( coin: v.coin, network: v.network, balanceString: v.cachedBalance, + displayWallet: v.coin == 'btc' ? config.displayBitcoinCore.enabled : true, getAddress: function(cb) { walletService.getAddress(v, false, cb); }, }); }); originalList = originalList.concat(walletList); + console.log(originalList); } } diff --git a/src/js/directives/walletSelector.js b/src/js/directives/walletSelector.js index 2ecc73403..578d298ce 100644 --- a/src/js/directives/walletSelector.js +++ b/src/js/directives/walletSelector.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.directives') - .directive('walletSelector', function($timeout) { + .directive('walletSelector', function($rootScope, $timeout, configService) { return { restrict: 'E', templateUrl: 'views/includes/walletSelector.html', @@ -11,9 +11,11 @@ angular.module('copayApp.directives') show: '=walletSelectorShow', wallets: '=walletSelectorWallets', selectedWallet: '=walletSelectorSelectedWallet', - onSelect: '=walletSelectorOnSelect' + onSelect: '=walletSelectorOnSelect', + alwaysDisplayBitcoinCore: '=walletSelectorAlwaysDisplayBitcoinCore' }, link: function(scope, element, attrs) { + scope.displayWallet = true; scope.hide = function() { scope.show = false; }; @@ -26,6 +28,19 @@ angular.module('copayApp.directives') scope.$watch('wallets', function(newValue, oldValue) { scope.wallets = newValue; }); + scope.initDisplayBitcoinCoreConfig = function() { + configService.whenAvailable(function(config) { + scope.displayBitcoinCore = config.displayBitcoinCore.enabled; + scope.initWalletDisplay(); + }); + }; + scope.initWalletDisplay = function() { + scope.displayWallet = scope.alwaysDisplayBitcoinCore ? true : scope.displayBitcoinCore; + }; + scope.initDisplayBitcoinCoreConfig(); + $rootScope.$on('Local/SettingsUpdated', function(e, walletId) { + scope.initDisplayBitcoinCoreConfig(); + }); } }; }); diff --git a/src/js/routes.js b/src/js/routes.js index 3d3c415aa..6501d5cf7 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -1310,6 +1310,9 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr applicationService.appLockModal('check'); }); }; + + profileService.initBitcoinCoreDisplay(); + // After everything have been loaded $timeout(function() { emailService.init(); // Update email subscription if necessary diff --git a/src/js/services/configService.js b/src/js/services/configService.js index 0a19d97e3..457f70aaf 100644 --- a/src/js/services/configService.js +++ b/src/js/services/configService.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.services').factory('configService', function(storageService, lodash, $log, $timeout, $rootScope, platformInfo) { +angular.module('copayApp.services').factory('configService', function(storageService, lodash, $log, $timeout, $rootScope, $injector, platformInfo) { var root = {}; var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; @@ -84,6 +84,10 @@ angular.module('copayApp.services').factory('configService', function(storageSer enabled: true, }, + displayBitcoinCore: { + enabled: false, + }, + hideNextSteps: { enabled: isWindowsPhoneApp ? true : false, }, @@ -245,6 +249,18 @@ angular.module('copayApp.services').factory('configService', function(storageSer return lodash.clone(defaultConfig); }; + root.checkIfConfigIsSet = function(key) { + return new Promise(function(resolve, reject) { + storageService.getConfig(function(err, localConfig) { + if (localConfig) { + configCache = JSON.parse(localConfig); + resolve(configCache.hasOwnProperty(key)); + } else { + reject(false); + } + }); + }); + } return root; }); diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index f3f6daad4..ad82bb531 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -1037,5 +1037,29 @@ angular.module('copayApp.services') return cb(null, txps, n); }; + root.initBitcoinCoreDisplay = function() { + configService.checkIfConfigIsSet('displayBitcoinCore').then(function(result) { + if (!result) { + var walletsBtc = root.getWallets({coin: 'btc'}); + var totalBtc = 0; + + walletsBtc.forEach( (value, key, index) => { + totalBtc += parseFloat(value.cachedBalance); + }); + + var enableDisplayBitcoinCore = totalBtc > 0 ? true : false; + + var opts = { + displayBitcoinCore: { + enabled: enableDisplayBitcoinCore + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + } + }); + }; + return root; }); diff --git a/www/views/advancedSettings.html b/www/views/advancedSettings.html index 253c35c8f..2b46e5375 100644 --- a/www/views/advancedSettings.html +++ b/www/views/advancedSettings.html @@ -29,6 +29,15 @@ Hide Next Steps Card + +
+ + + Bitcoin Core Wallet + +
+ If enabled, Bitcoin Core (BTC) wallet(s) will be displayed on the Home screen. If disabled, BTC wallets will be not be deleted, only hidden. +
diff --git a/www/views/includes/walletSelector.html b/www/views/includes/walletSelector.html index a53d1c7f1..bcb7b3f90 100644 --- a/www/views/includes/walletSelector.html +++ b/www/views/includes/walletSelector.html @@ -37,13 +37,14 @@ -
+
Bitcoin Core (BTC)
diff --git a/www/views/shapeshift.html b/www/views/shapeshift.html index 490b3a9c4..27be00fbd 100644 --- a/www/views/shapeshift.html +++ b/www/views/shapeshift.html @@ -99,7 +99,8 @@ wallet-selector-title="fromWalletSelectorTitle" wallet-selector-wallets="fromWallets" wallet-selector-selected-wallet="fromWallet" wallet-selector-show="showFromWallets" -wallet-selector-on-select="onFromWalletSelect"> +wallet-selector-on-select="onFromWalletSelect" +wallet-selector-always-display-bitcoin-core="true"> +wallet-selector-on-select="onToWalletSelect" +wallet-selector-always-display-bitcoin-core="true"> diff --git a/www/views/tab-home.html b/www/views/tab-home.html index b01013dc5..9560dab42 100644 --- a/www/views/tab-home.html +++ b/www/views/tab-home.html @@ -78,7 +78,8 @@
-
+
Bitcoin Core (BTC) diff --git a/www/views/tab-send.html b/www/views/tab-send.html index 47e67e72e..c5bfd27ef 100644 --- a/www/views/tab-send.html +++ b/www/views/tab-send.html @@ -70,7 +70,11 @@ Transfer to Wallet