show fee for bch in network fee screen
This commit is contained in:
parent
a2219b2f4f
commit
c014c431bc
3 changed files with 69 additions and 21 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('preferencesFeeController', function($scope, $timeout, $ionicHistory, lodash, gettextCatalog, configService, feeService, ongoingProcess, popupService) {
|
angular.module('copayApp.controllers').controller('preferencesFeeController', function($scope, $q, $timeout, $ionicHistory, lodash, gettextCatalog, configService, feeService, ongoingProcess, popupService) {
|
||||||
|
|
||||||
$scope.save = function(newFee) {
|
$scope.save = function(newFee) {
|
||||||
|
|
||||||
|
|
@ -32,24 +32,43 @@ angular.module('copayApp.controllers').controller('preferencesFeeController', fu
|
||||||
});
|
});
|
||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
var coin = 'btc'; // TODO: only BTC in preferences
|
|
||||||
$scope.network = $scope.network || 'livenet';
|
$scope.network = $scope.network || 'livenet';
|
||||||
$scope.feeOpts = feeService.feeOpts;
|
$scope.feeOpts = feeService.feeOpts;
|
||||||
$scope.currentFeeLevel = $scope.feeLevel || feeService.getCurrentFeeLevel();
|
$scope.currentFeeLevel = $scope.feeLevel || feeService.getCurrentFeeLevel();
|
||||||
$scope.loadingFee = true;
|
$scope.loadingFee = true;
|
||||||
feeService.getFeeLevels(coin, function(err, levels) {
|
|
||||||
$scope.loadingFee = false;
|
var btcFeePromise = $q(function(resolve, reject) {
|
||||||
if (err) {
|
feeService.getFeeLevels('btc', function(err, btcFeeLevels) {
|
||||||
//Error is already formatted
|
if (err) {
|
||||||
popupService.showAlert(err);
|
reject(err);
|
||||||
return;
|
} else {
|
||||||
}
|
resolve(btcFeeLevels);
|
||||||
$scope.feeLevels = levels;
|
}
|
||||||
updateCurrentValues();
|
|
||||||
$timeout(function() {
|
|
||||||
$scope.$apply();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var bchFeePromise = $q(function(resolve, reject) {
|
||||||
|
feeService.getFeeLevels('bch', function(err, bchFeeLevels) {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(bchFeeLevels);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$q.all([btcFeePromise, bchFeePromise]).then(function(levels) {
|
||||||
|
$scope.loadingFee = false;
|
||||||
|
$scope.feeLevels = levels[0];
|
||||||
|
$scope.bchFeeLevels = levels[1];
|
||||||
|
updateCurrentValues();
|
||||||
|
$timeout(function() {
|
||||||
|
$scope.$apply();
|
||||||
|
});
|
||||||
|
}, function(err) {
|
||||||
|
popupService.showAlert(err);
|
||||||
|
return;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var updateCurrentValues = function() {
|
var updateCurrentValues = function() {
|
||||||
|
|
@ -60,18 +79,33 @@ angular.module('copayApp.controllers').controller('preferencesFeeController', fu
|
||||||
});
|
});
|
||||||
|
|
||||||
if (lodash.isEmpty(value)) {
|
if (lodash.isEmpty(value)) {
|
||||||
$scope.feePerSatByte = $scope.currentFeeLevel == 'custom' ? $scope.feePerSatByte : null;
|
$scope.feePerSatByteBtc = $scope.currentFeeLevel == 'custom' ? $scope.feePerSatByteBtc : null;
|
||||||
$scope.avgConfirmationTime = null;
|
$scope.avgConfirmationTime = null;
|
||||||
setMinWarning();
|
setMinWarning();
|
||||||
setMaxWarning();
|
setMaxWarning();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.feePerSatByte = (value.feePerKb / 1000).toFixed();
|
$scope.feePerSatByteBtc = (value.feePerKb / 1000).toFixed();
|
||||||
$scope.avgConfirmationTime = value.nbBlocks * 10;
|
$scope.avgConfirmationTime = value.nbBlocks * 10;
|
||||||
$scope.invalidCustomFeeEntered = false;
|
$scope.invalidCustomFeeEntered = false;
|
||||||
setMinWarning();
|
setMinWarning();
|
||||||
setMaxWarning();
|
setMaxWarning();
|
||||||
|
|
||||||
|
if (lodash.isEmpty($scope.bchFeeLevels)) return;
|
||||||
|
|
||||||
|
var bchValue = {};
|
||||||
|
if ($scope.network == 'livenet') {
|
||||||
|
bchValue = lodash.find($scope.bchFeeLevels[$scope.network], {
|
||||||
|
level: 'normal'
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
bchValue = lodash.find($scope.bchFeeLevels[$scope.network], {
|
||||||
|
level: $scope.currentFeeLevel
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.feePerSatByteBch = (bchValue.feePerKb / 1000).toFixed();
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.chooseNewFee = function() {
|
$scope.chooseNewFee = function() {
|
||||||
|
|
@ -84,8 +118,8 @@ angular.module('copayApp.controllers').controller('preferencesFeeController', fu
|
||||||
$scope.showMinWarning = false;
|
$scope.showMinWarning = false;
|
||||||
popupService.showPrompt(gettextCatalog.getString('Custom Fee'), gettextCatalog.getString('Set your own fee in satoshis/byte'), null, function(text) {
|
popupService.showPrompt(gettextCatalog.getString('Custom Fee'), gettextCatalog.getString('Set your own fee in satoshis/byte'), null, function(text) {
|
||||||
if (!text || !parseInt(text) || parseInt(text) <= 0) return;
|
if (!text || !parseInt(text) || parseInt(text) <= 0) return;
|
||||||
$scope.feePerSatByte = parseInt(text);
|
$scope.feePerSatByteBtc = parseInt(text);
|
||||||
$scope.customFeePerKB = ($scope.feePerSatByte * 1000).toFixed();
|
$scope.customFeePerKB = ($scope.feePerSatByteBtc * 1000).toFixed();
|
||||||
setMaxWarning();
|
setMaxWarning();
|
||||||
setMinWarning();
|
setMinWarning();
|
||||||
$timeout(function() {
|
$timeout(function() {
|
||||||
|
|
@ -102,12 +136,12 @@ angular.module('copayApp.controllers').controller('preferencesFeeController', fu
|
||||||
};
|
};
|
||||||
|
|
||||||
var setMinWarning = function() {
|
var setMinWarning = function() {
|
||||||
if (parseInt($scope.feePerSatByte) < $scope.getMinimumRecommeded()) $scope.showMinWarning = true;
|
if (parseInt($scope.feePerSatByteBtc) < $scope.getMinimumRecommeded()) $scope.showMinWarning = true;
|
||||||
else $scope.showMinWarning = false;
|
else $scope.showMinWarning = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
var setMaxWarning = function() {
|
var setMaxWarning = function() {
|
||||||
if (parseInt($scope.feePerSatByte) > 1000) {
|
if (parseInt($scope.feePerSatByteBtc) > 1000) {
|
||||||
$scope.showMaxWarning = true;
|
$scope.showMaxWarning = true;
|
||||||
$scope.invalidCustomFeeEntered = true;
|
$scope.invalidCustomFeeEntered = true;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,9 @@ angular.module('copayApp.services').factory('feeService', function($log, $timeou
|
||||||
coin: ''
|
coin: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var defaults = configService.getDefaults();
|
||||||
|
|
||||||
root.getCurrentFeeLevel = function() {
|
root.getCurrentFeeLevel = function() {
|
||||||
return configService.getSync().wallet.settings.feeLevel || 'normal';
|
return configService.getSync().wallet.settings.feeLevel || 'normal';
|
||||||
};
|
};
|
||||||
|
|
@ -60,12 +63,18 @@ angular.module('copayApp.services').factory('feeService', function($log, $timeou
|
||||||
|
|
||||||
root.getFeeLevels = function(coin, cb) {
|
root.getFeeLevels = function(coin, cb) {
|
||||||
coin = coin || 'btc';
|
coin = coin || 'btc';
|
||||||
|
var opts = {};
|
||||||
|
if (coin == 'bch') {
|
||||||
|
opts.bwsurl = defaults.bwscash.url;
|
||||||
|
} else {
|
||||||
|
opts.bwsurl = defaults.bws.url;
|
||||||
|
}
|
||||||
|
|
||||||
if (cache.coin == coin && cache.updateTs > Date.now() - CACHE_TIME_TS * 1000) {
|
if (cache.coin == coin && cache.updateTs > Date.now() - CACHE_TIME_TS * 1000) {
|
||||||
return cb(null, cache.data, true);
|
return cb(null, cache.data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
var walletClient = bwcService.getClient();
|
var walletClient = bwcService.getClient(null, opts);
|
||||||
|
|
||||||
walletClient.getFeeLevels(coin, 'livenet', function(errLivenet, levelsLivenet) {
|
walletClient.getFeeLevels(coin, 'livenet', function(errLivenet, levelsLivenet) {
|
||||||
walletClient.getFeeLevels('btc', 'testnet', function(errTestnet, levelsTestnet) {
|
walletClient.getFeeLevels('btc', 'testnet', function(errTestnet, levelsTestnet) {
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,13 @@
|
||||||
<span ng-if="loadingFee">...</span>
|
<span ng-if="loadingFee">...</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span translate>Current fee rate for this policy</span>:
|
<span translate>Bitcoin Cash (BCH) rate for this policy</span>:
|
||||||
<span class="fee-rate" ng-if="feePerSatByte">{{feePerSatByte}} satoshis/byte</span>
|
<span class="fee-rate" ng-if="feePerSatByteBch">{{feePerSatByteBch}} satoshis/byte</span>
|
||||||
|
<span ng-if="loadingFee">...</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span translate>Bitcoin Core (BTC) rate for this policy</span>:
|
||||||
|
<span class="fee-rate" ng-if="feePerSatByteBtc">{{feePerSatByteBtc}} satoshis/byte</span>
|
||||||
<span ng-if="loadingFee">...</span>
|
<span ng-if="loadingFee">...</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue