Update: Adds a Bitcoin Core Wallet setting which hides BTC wallets when disabled

This commit is contained in:
Sam Cheng Hung 2018-03-27 11:30:34 +09:00
commit 780951eb2f
12 changed files with 108 additions and 9 deletions

View file

@ -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();

View file

@ -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;
});
});
});

View file

@ -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);
}
}

View file

@ -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();
});
}
};
});

View file

@ -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

View file

@ -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;
});

View file

@ -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;
});