From fbda525e6d90af8274242c8ab32fe8373358c324 Mon Sep 17 00:00:00 2001 From: matiu Date: Fri, 8 Sep 2017 05:03:30 -0300 Subject: [PATCH] refactor config/list/scan --- src/js/controllers/advancedSettings.js | 16 ----- src/js/controllers/cash.js | 97 ++++++++++++++++++++++++++ src/js/controllers/preferencesCash.js | 31 ++++++++ src/js/controllers/tab-settings.js | 7 ++ src/js/routes.js | 10 +++ www/views/advancedSettings.html | 10 --- www/views/cashScan.html | 41 +++++++++++ www/views/preferencesCash.html | 27 +++++++ 8 files changed, 213 insertions(+), 26 deletions(-) create mode 100644 src/js/controllers/cash.js create mode 100644 src/js/controllers/preferencesCash.js create mode 100644 www/views/cashScan.html create mode 100644 www/views/preferencesCash.html diff --git a/src/js/controllers/advancedSettings.js b/src/js/controllers/advancedSettings.js index 94f9a2553..42de010fe 100644 --- a/src/js/controllers/advancedSettings.js +++ b/src/js/controllers/advancedSettings.js @@ -14,9 +14,6 @@ angular.module('copayApp.controllers').controller('advancedSettingsController', $scope.hideNextSteps = { value: config.hideNextSteps.enabled }; - $scope.cashSupport = { - value: config.cashSupport.enabled - }; }; @@ -31,19 +28,6 @@ angular.module('copayApp.controllers').controller('advancedSettingsController', }); }; - - $scope.cashSupportChange = function() { - var opts = { - cashSupport: { - enabled: $scope.cashSupport.value - } - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); - }; - - $scope.nextStepsChange = function() { var opts = { hideNextSteps: { diff --git a/src/js/controllers/cash.js b/src/js/controllers/cash.js new file mode 100644 index 000000000..f456360de --- /dev/null +++ b/src/js/controllers/cash.js @@ -0,0 +1,97 @@ + +'use strict'; + +angular.module('copayApp.controllers').controller('otherBalanceController', + function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, $window, gettextCatalog, lodash, popupService, ongoingProcess, profileService, walletService, configService, $log, platformInfo, storageService, bwcError ) { + var wallet; + var listeners = []; + var notifications = []; + $scope.isCordova = platformInfo.isCordova; + $scope.isAndroid = platformInfo.isAndroid; + $scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; + $scope.isNW = platformInfo.isNW; + + + $scope.$on("$ionicView.enter", function(event, data) { + updateAllWallets(); + }); + + var updateAllWallets = function() { + var wallets = profileService.getWallets({coin:'btc', onlyComplete:true, network: 'livenet' }); + + + // TODO ? + if (lodash.isEmpty(wallets)) return; +console.log('[otherBalance.js.24:wallets:]',wallets); //TODO + + + var walletsBCH = profileService.getWallets({coin:'bch', network: 'livenet' }); + var xPubKeyIndex = lodash.indexBy(walletsBCH,"credentials.xPubKey"); +console.log('[otherBalance.js.28:xPubKeyIndex:]',xPubKeyIndex); //TODO + + wallets= lodash.filter(wallets,function(w) { return xPubKeyIndex[w.credentials.xPubKey]; }); +console.log('[otherBalance.js.31:wallets:]',wallets); //TODO + + + // TODO Filterout already duplicated walelts + // TODO filterout balance=0 wallets + // + // + + $scope.wallets = wallets; + + var i = wallets.length; + var j = 0; + lodash.each(wallets, function(wallet) { + walletService.getBalance(wallet, {coin:'bch'}, function(err, status) { + if (err) { + + wallet.error = (err === 'WALLET_NOT_REGISTERED') ? gettextCatalog.getString('Wallet not registered') : bwcError.msg(err); + + $log.error(err); + return; + } +// + +console.log('[otherBalance.js.28:status:]',status); //TODO + wallet.error = null; + wallet.status = status; + if (++j == i) { + // + } + }); + }); + }; + + $scope.duplicate = function(wallet) { + $log.debug('Duplicating wallet for BCH:' + wallet.id + ':' + wallet.name); + + var opts = {}; + opts.name = wallet.name + '[BCH]'; + opts.m = wallet.m; + opts.n = wallet.n; + opts.myName = wallet.credentials.copayerName; + opts.networkName = wallet.network; + opts.coin = 'bch'; + + // TODO: finger print / decrypt + $log.warn('TODO finger print / decrypt'); + + + opts.walletPrivKey = wallet.credentials.walletPrivKey; + + walletService.getStatus(wallet, {}, function(err, status){ + if (err) { + // TODO + $log.err('TODO Err'); + return; + } + opts.singleAddress = status.wallet.singleAddress; + + // create and store a wallet + profileService.createWallet(opts, function(err) { + $state.go('tabs.home'); + }); + }); + } + }); diff --git a/src/js/controllers/preferencesCash.js b/src/js/controllers/preferencesCash.js new file mode 100644 index 000000000..e754e004d --- /dev/null +++ b/src/js/controllers/preferencesCash.js @@ -0,0 +1,31 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('preferencesCashController', function($scope, $log, $timeout, appConfigService, lodash, configService, platformInfo, pushNotificationsService, emailService) { + var updateConfig = function() { + var config = configService.getSync(); + $scope.appName = appConfigService.nameCase; + + $scope.cashSupport = { + value: config.wallet.cashSupport.enabled + }; + + $timeout(function() { + $scope.$apply(); + }); + }; + + $scope.cashSupportChange = function() { + var opts = { + wallet: { + cashSupport: $scope.cashSupport.value + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + }; + + $scope.$on("$ionicView.enter", function(event, data) { + updateConfig(); + }); +}); diff --git a/src/js/controllers/tab-settings.js b/src/js/controllers/tab-settings.js index f806b0f84..4c6f208a7 100644 --- a/src/js/controllers/tab-settings.js +++ b/src/js/controllers/tab-settings.js @@ -25,6 +25,11 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct }, 10); }); + $scope.cashSupport = { + value: config.cashSupport.enabled + }; + + // TODO move this to a generic service bitpayCardService.getCards(function(err, cards) { if (err) $log.error(err); @@ -62,6 +67,8 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct }); }); + + $scope.$on("$ionicView.enter", function(event, data) { updateConfig(); }); diff --git a/src/js/routes.js b/src/js/routes.js index 0fe72181d..36af61e8c 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -464,6 +464,16 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } } }) + .state('tabs.cash', { + url: '/cash', + views: { + 'tab-home@tabs': { + controller: 'cashController', + templateUrl: 'views/tab-cash.html' + } + } + }) + /* * diff --git a/www/views/advancedSettings.html b/www/views/advancedSettings.html index 58031d981..253c35c8f 100644 --- a/www/views/advancedSettings.html +++ b/www/views/advancedSettings.html @@ -8,16 +8,6 @@
- - Support Bitcoin Cash - -
- Enable Bitcoin Cash wallet creation and operation within the App. - Learn more -
- - - Use Unconfirmed Funds diff --git a/www/views/cashScan.html b/www/views/cashScan.html new file mode 100644 index 000000000..3c0e47a89 --- /dev/null +++ b/www/views/cashScan.html @@ -0,0 +1,41 @@ + + + + Bitcoin Cash (BCH) Balances + + + + + + + +
+
+ BTC Wallets +
+
+
+ + + + + {{wallet.name || wallet.id}} + +

+ {{wallet.status.totalBalanceStr ? wallet.status.totalBalanceStr : ( wallet.cachedBalance ? wallet.cachedBalance + (wallet.cachedBalanceUpdatedOn ? ' · ' + ( wallet.cachedBalanceUpdatedOn * 1000 | amTimeAgo) : '') : '' ) }} + + + {{wallet.m}}-of-{{wallet.n}} + +   +

+ +
+
+
+ +
diff --git a/www/views/preferencesCash.html b/www/views/preferencesCash.html new file mode 100644 index 000000000..ba10d31f6 --- /dev/null +++ b/www/views/preferencesCash.html @@ -0,0 +1,27 @@ + + + {{'Bitcoin Cash Support' | translate}} + + + + + +
+ + Support Bitcoin Cash + + +
+ Enable Bitcoin Cash wallet creation and operation within the App. + Learn more +
+ + +
+ + + +
+
+
+