114 lines
3.2 KiB
JavaScript
114 lines
3.2 KiB
JavaScript
'use strict';
|
|
|
|
angular.module('copayApp.controllers').controller('preferencesFeeController', function($scope, $timeout, $ionicHistory, lodash, gettextCatalog, configService, feeService, ongoingProcess, popupService) {
|
|
|
|
$scope.save = function(newFee) {
|
|
|
|
$scope.currentFeeLevel = newFee;
|
|
|
|
if ($scope.currentFeeLevel != 'custom') updateCurrentValues();
|
|
else showCustomFeePrompt();
|
|
|
|
if ($scope.noSave) return;
|
|
|
|
var opts = {
|
|
wallet: {
|
|
settings: {
|
|
feeLevel: newFee
|
|
}
|
|
}
|
|
};
|
|
|
|
configService.set(opts, function(err) {
|
|
if (err) $log.debug(err);
|
|
$timeout(function() {
|
|
$scope.$apply();
|
|
});
|
|
});
|
|
};
|
|
|
|
$scope.$on("$ionicView.beforeEnter", function(event, data) {
|
|
$scope.init();
|
|
});
|
|
|
|
$scope.init = function() {
|
|
$scope.network = $scope.network || 'livenet';
|
|
$scope.feeOpts = feeService.feeOpts;
|
|
$scope.currentFeeLevel = $scope.feeLevel || feeService.getCurrentFeeLevel();
|
|
$scope.loadingFee = true;
|
|
feeService.getFeeLevels(function(err, levels) {
|
|
$scope.loadingFee = false;
|
|
if (err) {
|
|
//Error is already formatted
|
|
popupService.showAlert(err);
|
|
return;
|
|
}
|
|
$scope.feeLevels = levels;
|
|
updateCurrentValues();
|
|
$timeout(function() {
|
|
$scope.$apply();
|
|
});
|
|
});
|
|
};
|
|
|
|
var updateCurrentValues = function() {
|
|
if (lodash.isEmpty($scope.feeLevels) || lodash.isEmpty($scope.currentFeeLevel)) return;
|
|
|
|
var value = lodash.find($scope.feeLevels[$scope.network], {
|
|
level: $scope.currentFeeLevel
|
|
});
|
|
|
|
if (lodash.isEmpty(value)) {
|
|
$scope.feePerSatByte = $scope.currentFeeLevel == 'custom' ? $scope.feePerSatByte : null;
|
|
$scope.avgConfirmationTime = null;
|
|
setMinWarning();
|
|
setMaxWarning();
|
|
return;
|
|
}
|
|
|
|
$scope.feePerSatByte = (value.feePerKB / 1000).toFixed();
|
|
$scope.avgConfirmationTime = value.nbBlocks * 10;
|
|
$scope.invalidCustomFeeEntered = false;
|
|
setMinWarning();
|
|
setMaxWarning();
|
|
};
|
|
|
|
$scope.chooseNewFee = function() {
|
|
$scope.hideModal($scope.currentFeeLevel, $scope.customFeePerKB);
|
|
};
|
|
|
|
var showCustomFeePrompt = function() {
|
|
$scope.invalidCustomFeeEntered = true;
|
|
$scope.showMaxWarning = false;
|
|
popupService.showPrompt(null, gettextCatalog.getString('Custom Fee'), null, function(text) {
|
|
if (!text || !parseInt(text)) return;
|
|
$scope.feePerSatByte = parseInt(text);
|
|
$scope.customFeePerKB = ($scope.feePerSatByte * 1000).toFixed();
|
|
setMaxWarning();
|
|
setMinWarning();
|
|
});
|
|
};
|
|
|
|
$scope.getMinimumRecommeded = function() {
|
|
var value = lodash.find($scope.feeLevels[$scope.network], {
|
|
level: 'superEconomy'
|
|
});
|
|
return parseInt((value.feePerKB / 1000).toFixed());
|
|
};
|
|
|
|
var setMinWarning = function() {
|
|
if (parseInt($scope.feePerSatByte) < $scope.getMinimumRecommeded()) $scope.showMinWarning = true;
|
|
else $scope.showMinWarning = false;
|
|
};
|
|
|
|
var setMaxWarning = function() {
|
|
if (parseInt($scope.feePerSatByte) > 1000) {
|
|
$scope.showMaxWarning = true;
|
|
$scope.invalidCustomFeeEntered = true;
|
|
} else {
|
|
$scope.showMaxWarning = false;
|
|
$scope.invalidCustomFeeEntered = false;
|
|
}
|
|
};
|
|
|
|
});
|