From d75af58ddf1da3d2c0973b71c1e9ff68664ec2ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Baz=C3=A1n?= Date: Tue, 27 Sep 2016 15:57:39 -0300 Subject: [PATCH] advanced settings --- public/views/advancedSettings.html | 63 ++++++++++++++ public/views/tab-home.html | 12 +-- public/views/tab-settings.html | 27 ++---- src/js/controllers/advancedSettings.js | 113 +++++++++++++++++++++++++ src/js/controllers/tab-home.js | 4 + src/js/controllers/tab-settings.js | 41 +-------- src/js/routes.js | 9 ++ src/js/services/configService.js | 32 ++++++- src/js/services/profileService.js | 24 +----- 9 files changed, 239 insertions(+), 86 deletions(-) create mode 100644 public/views/advancedSettings.html create mode 100644 src/js/controllers/advancedSettings.js diff --git a/public/views/advancedSettings.html b/public/views/advancedSettings.html new file mode 100644 index 000000000..842904fd5 --- /dev/null +++ b/public/views/advancedSettings.html @@ -0,0 +1,63 @@ + + + {{'Advanced Settings' | translate}} + + + + + +
+
Enabled Integrations
+ + + Enable Bitpay Card Integration + + + + Enable Amazon Integration + + + + Enable Glidera Service + + + + + + + +
Wallet Operation
+ + + Use Unconfirmed Funds + +
+ If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays. +
+ +
Experimental Features
+
+ These features aren't quite ready for primetime. They may change, stop working, or disappear at any time. +
+ + + Recent Transaction Card + +
+ If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab. +
+ + + + + +
+
+
diff --git a/public/views/tab-home.html b/public/views/tab-home.html index 998160d29..37643f5e2 100644 --- a/public/views/tab-home.html +++ b/public/views/tab-home.html @@ -33,9 +33,9 @@ -
+
+ ng-if="(!externalServices.AmazonGiftCards || !externalServices.BitpayCard || !externalServices.BuyAndSell || !wallets[0]) && nextStepEnabled">
Next steps @@ -128,21 +128,21 @@ Create a bitcoin wallet - +
Add BitPay Card
- +
Buy or Sell Bitcoin
- +
diff --git a/public/views/tab-settings.html b/public/views/tab-settings.html index 6c5add5f2..cb9113da9 100644 --- a/public/views/tab-settings.html +++ b/public/views/tab-settings.html @@ -50,25 +50,6 @@
-
Exchanges
- - - Enable Glidera Service - - - - - -
Others
- - - Use Unconfirmed Funds - -
Notifications
@@ -108,6 +89,14 @@ About {{appName}} + +
+ + Advanced + + + +
diff --git a/src/js/controllers/advancedSettings.js b/src/js/controllers/advancedSettings.js new file mode 100644 index 000000000..928b64a93 --- /dev/null +++ b/src/js/controllers/advancedSettings.js @@ -0,0 +1,113 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('advancedSettingsController', function($scope, $rootScope, $log, $window, lodash, configService, uxLanguage, platformInfo, pushNotificationsService, profileService, feeService) { + + var updateConfig = function() { + + var config = configService.getSync(); + + $scope.spendUnconfirmed = { + value: config.wallet.spendUnconfirmed + }; + $scope.bitpayCardEnabled = { + value: config.bitpayCard.enabled + }; + $scope.amazonEnabled = { + value: config.amazon.enabled + }; + $scope.glideraEnabled = { + value: config.glidera.enabled + }; + $scope.coinbaseEnabled = { + value: config.coinbase.enabled + }; + $scope.recentTransactionsEnabled = { + value: config.recentTransactions.enabled + }; + $scope.frequentlyUsedEnabled = { + value: config.frequentlyUsed.enabled + }; + }; + + $scope.spendUnconfirmedChange = function() { + var opts = { + wallet: { + spendUnconfirmed: $scope.spendUnconfirmed.value + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + }; + + $scope.bitpayCardChange = function() { + var opts = { + bitpayCard: { + enabled: $scope.bitpayCardEnabled.value + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + }; + + $scope.amazonChange = function() { + var opts = { + amazon: { + enabled: $scope.amazonEnabled.value + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + }; + + $scope.glideraChange = function() { + var opts = { + glidera: { + enabled: $scope.glideraEnabled.value + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + }; + + $scope.coinbaseChange = function() { + var opts = { + coinbase: { + enabled: $scope.coinbaseEnabled + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + }; + + $scope.recentTransactionsChange = function() { + var opts = { + recentTransactions: { + enabled: $scope.recentTransactionsEnabled + } + }; + configService.set(opts, function(err) { + if (err) $log.debug(err); + }); + }; + + $scope.frequentlyUsedChange = function() { + var opts = { + frequentlyUsed: { + enabled: $scope.frequentlyUsedEnabled + } + }; + 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-home.js b/src/js/controllers/tab-home.js index f58bb7ca0..fbaa561f4 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -209,6 +209,10 @@ angular.module('copayApp.controllers').controller('tabHomeController', var isWindowsPhoneApp = platformInfo.isWP && platformInfo.isCordova; $scope.glideraEnabled = config.glidera.enabled && !isWindowsPhoneApp; $scope.coinbaseEnabled = config.coinbase.enabled && !isWindowsPhoneApp; + $scope.amazonEnabled = config.amazon.enabled; + $scope.bitpayCardEnabled = config.bitpayCard.enabled; + $scope.nextStepEnabled = $scope.glideraEnabled || $scope.coinbaseEnabled || $scope.amazonEnabled || $scope.bitpayCardEnabled; + $scope.recentTransactionsEnabled = config.recentTransactions.enabled; }); $scope.nextStep(); $scope.updateAllWallets(); diff --git a/src/js/controllers/tab-settings.js b/src/js/controllers/tab-settings.js index f8f13202c..ba4bfafda 100644 --- a/src/js/controllers/tab-settings.js +++ b/src/js/controllers/tab-settings.js @@ -28,13 +28,7 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct $scope.$digest(); }); } - $scope.spendUnconfirmed = { - value: config.wallet.spendUnconfirmed - }; - $scope.glideraEnabled = { - value: config.glidera.enabled - }; - $scope.coinbaseEnabled = config.coinbase.enabled; + $scope.pushNotifications = { value: config.pushNotifications.enabled }; @@ -52,17 +46,6 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct }); }; - $scope.spendUnconfirmedChange = function() { - var opts = { - wallet: { - spendUnconfirmed: $scope.spendUnconfirmed.value - } - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); - }; - $scope.pushNotificationsChange = function() { var opts = { pushNotifications: { @@ -78,28 +61,6 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct }); }; - $scope.glideraChange = function() { - var opts = { - glidera: { - enabled: $scope.glideraEnabled.value - } - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); - }; - - $scope.coinbaseChange = function() { - var opts = { - coinbase: { - enabled: $scope.coinbaseEnabled - } - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); - }; - $scope.$on("$ionicView.enter", function(event, data) { updateConfig(); }); diff --git a/src/js/routes.js b/src/js/routes.js index 489c156f6..501a304f5 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -390,6 +390,15 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } } }) + .state('tabs.advanced', { + url: '/advanced', + views: { + 'tab-settings@tabs': { + controller: 'advancedSettingsController', + templateUrl: 'views/advancedSettings.html' + } + } + }) /* * diff --git a/src/js/services/configService.js b/src/js/services/configService.js index 9ef2fdf23..f7728c6c5 100644 --- a/src/js/services/configService.js +++ b/src/js/services/configService.js @@ -39,10 +39,28 @@ angular.module('copayApp.services').factory('configService', function(storageSer }, coinbase: { - enabled: true, + enabled: false, //disable coinbase for this release testnet: false }, + bitpayCard: { + enabled: true + }, + + amazon: { + enabled: true + }, + + //Experimental Features + + recentTransactions: { + enabled: true + }, + + frequentlyUsed: { + enabled: true + }, + rates: { url: 'https://insight.bitpay.com:443/api/rates', }, @@ -111,6 +129,18 @@ angular.module('copayApp.services').factory('configService', function(storageSer if (!configCache.coinbase) { configCache.coinbase = defaultConfig.coinbase; } + if (!configCache.amazon) { + configCache.amazon = defaultConfig.amazon; + } + if (!configCache.bitpayCard) { + configCache.bitpayCard = defaultConfig.bitpayCard; + } + if (!configCache.recentTransactions) { + configCache.recentTransactions = defaultConfig.recentTransactions; + } + if (!configCache.frequentlyUsed) { + configCache.frequentlyUsed = defaultConfig.frequentlyUsed; + } if (!configCache.pushNotifications) { configCache.pushNotifications = defaultConfig.pushNotifications; } diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 247516f9f..0dea73fb0 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -780,21 +780,11 @@ angular.module('copayApp.services') var TIME_STAMP = 60 * 60 * 24 * 7; var MAX = 100; - var typeFilter1 = { - 'NewBlock': 1, - 'BalanceUpdated': 1, - 'NewOutgoingTxByThirdParty': 1, - 'NewAddress': 1, - 'TxProposalFinallyAccepted': 1, - 'TxProposalFinallyRejected': 1, + var typeFilter = { + 'NewOutgoingTx': 1, + 'NewIncomingTx': 1 }; - var typeFilter2 = { - 'TxProposalAcceptedBy': 1, - 'TxProposalRejectedBy': 1, - 'NewTxProposal': 1, - } - var w = root.getWallets(); if (lodash.isEmpty(w)) return cb(); @@ -895,15 +885,9 @@ angular.module('copayApp.services') var n; n = lodash.filter(wallet.cachedActivity.n, function(x) { - return !typeFilter1[x.type]; + return typeFilter[x.type]; }); - if (wallet.m == 1) { - n = lodash.filter(n, function(x) { - return !typeFilter2[x.type]; - }); - } - var idToName = {}; if (wallet.cachedStatus) { lodash.each(wallet.cachedStatus.wallet.copayers, function(c) {