From 206fe41db59c53d4bdc03f77e39cf7d434ec1454 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Fri, 19 Jun 2015 15:00:27 -0300 Subject: [PATCH 1/7] implement send all support --- public/views/walletHome.html | 9 +++++++-- src/js/controllers/index.js | 6 ++++++ src/js/controllers/walletHome.js | 21 +++++++++++++++++++++ src/js/routes.js | 2 +- 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/public/views/walletHome.html b/public/views/walletHome.html index 13be22a95..ea21fb1fc 100644 --- a/public/views/walletHome.html +++ b/public/views/walletHome.html @@ -278,6 +278,11 @@

+ +
@@ -397,10 +402,10 @@
-
+ -
+
diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 103a2eeaa..608010349 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -57,9 +57,8 @@ angular.module('copayApp.controllers').controller('indexController', function($r isoCode: 'pt', }]; - self.setOngoingProcess = function(processName, isOn, quiet) { + self.setOngoingProcess = function(processName, isOn) { $log.debug('onGoingProcess', processName, isOn); - if (quiet) return; self[processName] = isOn; self.onGoingProcess[processName] = isOn; @@ -179,13 +178,14 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.updateAll = function(opts, initStatusHash, tries) { tries = tries || 0; - var quiet = (opts && opts.quiet) ? true : null; - if (opts && opts.untilItChanges && lodash.isUndefined(initStatusHash)) { + opts = opts || {}; + + if (opts.untilItChanges && lodash.isUndefined(initStatusHash)) { initStatusHash = _walletStatusHash(); $log.debug('Updating status until it changes. initStatusHash:' + initStatusHash) } var get = function(cb) { - if (opts && opts.walletStatus) + if (opts.walletStatus) return cb(null, opts.walletStatus); else { self.updateError = false; @@ -193,7 +193,8 @@ angular.module('copayApp.controllers').controller('indexController', function($r if (err) { self.updateError = true; } else { - self.setOngoingProcess('scanning', ret.wallet.scanning, quiet); + if (!opts.quiet) + self.setOngoingProcess('scanning', ret.wallet.scanning); } return cb(err, ret); }); @@ -204,18 +205,23 @@ angular.module('copayApp.controllers').controller('indexController', function($r if (!fc) return; $timeout(function() { - self.setOngoingProcess('updatingStatus', true, quiet); + + if (!opts.quiet) + self.setOngoingProcess('updatingStatus', true); + $log.debug('Updating Status:', fc, tries); get(function(err, walletStatus) { var currentStatusHash = _walletStatusHash(walletStatus); $log.debug('Status update. hash:' + currentStatusHash + ' Try:'+ tries); - if (!err && (opts && opts.untilItChanges) && initStatusHash == currentStatusHash && tries < 7) { + if (!err && opts.untilItChanges && initStatusHash == currentStatusHash && tries < 7) { return $timeout(function() { $log.debug('Retrying update... Try:' + tries) return self.updateAll({walletStatus: null, untilItChanges: true}, initStatusHash, ++tries); }, 1400 * tries); } - self.setOngoingProcess('updatingStatus', false, quiet); + if (!opts.quiet) + self.setOngoingProcess('updatingStatus', false); + if (err) { self.handleError(err); return; @@ -437,11 +443,15 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.availableBalanceBTC = strip(self.availableBalanceBTC / COIN); // KB to send max - self.feePerKbSat = config.feePerKbSat || 10000; - var feeToSendMaxSat = balance.totalKbToSendMax * self.feePerKbSat; + self.feePerKbSat = config.feePerKbSat || 10000; + if (balance.totalKbToSendMax) { + var feeToSendMaxSat = balance.totalKbToSendMax * self.feePerKbSat; - self.availableMaxBalance = strip((self.availableBalanceSat - feeToSendMaxSat) * self.satToUnit); - self.feeToSendMaxStr = profileService.formatAmount(feeToSendMaxSat) + ' ' + self.unitName; + self.availableMaxBalance = strip((self.availableBalanceSat - feeToSendMaxSat) * self.satToUnit); + self.feeToSendMaxStr = profileService.formatAmount(feeToSendMaxSat) + ' ' + self.unitName; + } else { + self.feeToSendMaxStr = null; + } //STR self.totalBalanceStr = profileService.formatAmount(self.totalBalanceSat) + ' ' + self.unitName; From 67ba30a20e8eca919b820c78062b020db61b01dc Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Fri, 19 Jun 2015 17:22:12 -0300 Subject: [PATCH 3/7] add support for fee customization Signed-off-by: Matias Alejo Garcia --- bower.json | 2 +- public/views/preferences.html | 8 +++++++ public/views/preferencesFee.html | 14 +++++++++++ src/js/controllers/index.js | 2 +- src/js/controllers/preferences.js | 1 + src/js/controllers/preferencesFee.js | 35 ++++++++++++++++++++++++++++ src/js/controllers/walletHome.js | 1 + src/js/routes.js | 13 +++++++++++ 8 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 public/views/preferencesFee.html create mode 100644 src/js/controllers/preferencesFee.js diff --git a/bower.json b/bower.json index 17c755ef6..f3ecba9c5 100644 --- a/bower.json +++ b/bower.json @@ -17,7 +17,7 @@ "ng-lodash": "~0.2.0", "angular-moment": "~0.10.1", "moment": "~2.10.3", - "angular-bitcore-wallet-client": "^0.0.24", + "angular-bitcore-wallet-client": "^0.0.25", "angular-ui-router": "~0.2.13", "qrcode-decoder-js": "*", "fastclick": "*", diff --git a/public/views/preferences.html b/public/views/preferences.html index d431d8d17..e9ffdbd7b 100644 --- a/public/views/preferences.html +++ b/public/views/preferences.html @@ -77,6 +77,14 @@ {{preferences.selectedAlternative.name}} +
  • + Bitcoin Network Fee Policy + + + {{preferences.feeName}} + +
  • +
  • Bitcore Wallet Service diff --git a/public/views/preferencesFee.html b/public/views/preferencesFee.html new file mode 100644 index 000000000..fb4885cb6 --- /dev/null +++ b/public/views/preferencesFee.html @@ -0,0 +1,14 @@ +
    +
    + + +
    +
    + {{fee.name}} ({{fee.value}} bits per kB) + +
    +
    +
    diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 608010349..664e67d3b 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -443,7 +443,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.availableBalanceBTC = strip(self.availableBalanceBTC / COIN); // KB to send max - self.feePerKbSat = config.feePerKbSat || 10000; + self.feePerKbSat = config.feeValue || 10000; if (balance.totalKbToSendMax) { var feeToSendMaxSat = balance.totalKbToSendMax * self.feePerKbSat; diff --git a/src/js/controllers/preferences.js b/src/js/controllers/preferences.js index 742db5a84..e19db43dc 100644 --- a/src/js/controllers/preferences.js +++ b/src/js/controllers/preferences.js @@ -4,6 +4,7 @@ angular.module('copayApp.controllers').controller('preferencesController', function($scope, $rootScope, $filter, $timeout, $modal, $log, lodash, configService, profileService) { var config = configService.getSync(); this.unitName = config.wallet.settings.unitName; + this.feeName = config.wallet.settings.feeName || 'Priority'; this.bwsurl = config.bws.url; this.selectedAlternative = { name: config.wallet.settings.alternativeName, diff --git a/src/js/controllers/preferencesFee.js b/src/js/controllers/preferencesFee.js new file mode 100644 index 000000000..2ae1f6b88 --- /dev/null +++ b/src/js/controllers/preferencesFee.js @@ -0,0 +1,35 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('preferencesFeeController', + function($rootScope, $scope, configService, go) { + var config = configService.getSync(); + this.feeName = config.wallet.settings.feeName || 'Priority'; + this.feeOpts = [{ + name: 'Priority', + value: 100, + }, { + name: 'Normal', + value: 50, + }, { + name: 'Economy', + value: 10, + }]; + + this.save = function(newFee) { + var opts = { + wallet: { + settings: { + feeName: newFee.name, + feeValue: newFee.value * 100, + } + } + }; + this.feeName = newFee.name; + + configService.set(opts, function(err) { + if (err) console.log(err); + $scope.$emit('Local/UnitSettingUpdated'); + }); + + }; + }); diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index ac631efa4..6a53c4401 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -608,6 +608,7 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi amount: amount, message: comment, payProUrl: paypro ? paypro.url : null, + feePerKb: config.feeValue || 10000, }, function(err, txp) { if (err) { self.setOngoingProcess(); diff --git a/src/js/routes.js b/src/js/routes.js index 1db5d9a8a..14b74f7f2 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -245,6 +245,18 @@ angular }, } }) + .state('preferencesFee', { + url: '/preferencesFee', + templateUrl: 'views/preferencesFee.html', + walletShouldBeComplete: true, + needProfile: true, + views: { + 'main': { + templateUrl: 'views/preferencesFee.html' + }, + } + }) + .state('preferencesAdvanced', { url: '/preferencesAdvanced', templateUrl: 'views/preferencesAdvanced.html', @@ -451,6 +463,7 @@ angular delete: 13, preferencesLanguage: 12, preferencesUnit: 12, + preferencesFee: 12, preferencesAltCurrency: 12, preferencesBwsUrl: 12, preferencesAlias: 12, From d1c55e087691f639af8f2407521144ac125aa7e3 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 22 Jun 2015 11:33:53 -0300 Subject: [PATCH 4/7] Adds Fee to TXP modal --- public/views/modals/txp-details.html | 4 ++++ src/js/controllers/index.js | 1 + src/js/controllers/walletHome.js | 1 + 3 files changed, 6 insertions(+) diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html index 2b24ff00d..e1aaa244d 100644 --- a/public/views/modals/txp-details.html +++ b/public/views/modals/txp-details.html @@ -24,6 +24,10 @@ {{alternativeAmountStr}}
  • +
  • + Fee: + {{feeStr}} +
  • Time: diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 664e67d3b..9d2501bb5 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -349,6 +349,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r lodash.each(txps, function(tx) { var amount = tx.amount * self.satToUnit; tx.amountStr = profileService.formatAmount(tx.amount) + ' ' + config.unitName; + tx.feeStr = profileService.formatAmount(tx.fee) + ' ' + config.unitName; tx.alternativeAmount = rateService.toFiat(tx.amount, config.alternativeIsoCode) ? rateService.toFiat(tx.amount, config.alternativeIsoCode).toFixed(2) : 'N/A'; tx.alternativeAmountStr = tx.alternativeAmount + " " + config.alternativeIsoCode; tx.alternativeIsoCode = config.alternativeIsoCode; diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index 6a53c4401..0f909c3a7 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -132,6 +132,7 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi $scope.error = null; $scope.tx = tx; $scope.amountStr = tx.amountStr; + $scope.feeStr = tx.feeStr; $scope.alternativeAmountStr = tx.alternativeAmountStr; $scope.copayers = copayers $scope.copayerId = fc.credentials.copayerId; From 0cdda72086ead8e408a911637958b78edd365ca4 Mon Sep 17 00:00:00 2001 From: bechi Date: Mon, 22 Jun 2015 14:35:16 -0300 Subject: [PATCH 5/7] add style on send all --- public/views/walletHome.html | 10 +++++----- src/css/main.css | 7 +++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/public/views/walletHome.html b/public/views/walletHome.html index 516364234..5e298ed0f 100644 --- a/public/views/walletHome.html +++ b/public/views/walletHome.html @@ -278,14 +278,14 @@

    - +
    -
    +
    Available Balance: {{index.availableBalanceStr }} @@ -294,9 +294,9 @@
    - +
    -
    +
    Available Balance: {{index.availableBalanceStr }} diff --git a/src/css/main.css b/src/css/main.css index f344b4dfd..2d627661c 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -49,6 +49,13 @@ h4.title { font-size: 0.7rem; } +h4.title a { + text-transform: none; + font-weight: 400; + margin-top: 7px; + font-size: 12px; +} + body, html{ height:100%; width:100%; From 14401312ce0a2f960433be54361fc4c0bb17d0a9 Mon Sep 17 00:00:00 2001 From: bechi Date: Mon, 22 Jun 2015 14:40:20 -0300 Subject: [PATCH 6/7] fix padding --- src/css/main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/main.css b/src/css/main.css index 2d627661c..2300e15d3 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -52,7 +52,7 @@ h4.title { h4.title a { text-transform: none; font-weight: 400; - margin-top: 7px; + padding: 7px; font-size: 12px; } From 304e16337f2596cf6821f1a9e87025f7118facd7 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 22 Jun 2015 15:42:39 -0300 Subject: [PATCH 7/7] Fixes confirmation popup for send-all on devices --- src/js/controllers/walletHome.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index 0f909c3a7..635217a3d 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -924,14 +924,19 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi }; this.sendAll = function(amount, feeStr) { + var self = this; var msg = gettextCatalog.getString("{{fee}} will be discounted for bitcoin networking fees", { fee: feeStr }); if (isCordova) { navigator.notification.confirm( msg, - this._doSendAll(amount), - 'OK', 'Cancel' + function(buttonIndex) { + if (buttonIndex == 1) + $timeout(function() { + self._doSendAll(amount); + }, 1); + } ); } else { if (confirm(msg))