+ Send All
Send All
diff --git a/src/css/main.css b/src/css/main.css
index 68355d572..df67974ac 100644
--- a/src/css/main.css
+++ b/src/css/main.css
@@ -1477,7 +1477,8 @@ input.ng-invalid-match, input.ng-invalid-match:focus {
#history .spinner > div,
#receive .spinner > div,
-.copayers .spinner > div
+.copayers .spinner > div,
+.preferences-fee .spinner > div
{
background-color: #7A8C9E;
}
diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js
index d4b07bccd..9809b9c59 100644
--- a/src/js/controllers/index.js
+++ b/src/js/controllers/index.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, bwcService, pushNotificationsService, lodash, go, profileService, configService, isCordova, rateService, storageService, addressService, gettext, gettextCatalog, amMoment, nodeWebkit, addonManager, feeService, isChromeApp, bwsError, txFormatService, uxLanguage, $state, glideraService, isMobile, addressbookService) {
+angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, bwcService, pushNotificationsService, lodash, go, profileService, configService, isCordova, rateService, storageService, addressService, gettext, gettextCatalog, amMoment, nodeWebkit, addonManager, isChromeApp, bwsError, txFormatService, uxLanguage, $state, glideraService, isMobile, addressbookService) {
var self = this;
var SOFT_CONFIRMATION_LIMIT = 12;
var errors = bwcService.getErrors();
@@ -45,7 +45,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r
ret.txTemplateUrl = addonManager.txTemplateUrl() || 'views/includes/transaction.html';
ret.tab = 'walletHome';
- ret.feeOpts = feeService.feeOpts;
var vanillaScope = ret;
@@ -359,10 +358,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r
$log.debug('Wallet Status:', walletStatus);
self.setPendingTxps(walletStatus.pendingTxps);
- if (!self.feeLevels) {
- self.setFeesOpts();
- }
-
// Status Shortcuts
self.walletName = walletStatus.wallet.name;
self.walletSecret = walletStatus.wallet.secret;
@@ -390,50 +385,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r
self.setSpendUnconfirmed = function(spendUnconfirmed) {
self.spendUnconfirmed = spendUnconfirmed || configService.getSync().wallet.spendUnconfirmed;
- };
-
- self.setFeeAndSendMax = function(cb) {
-
- self.availableMaxBalance = null;
- self.currentFeePerKb = null;
-
- // Set Send max
- if (self.currentFeeLevel && self.totalBytesToSendMax) {
- feeService.getCurrentFeeValue(self.currentFeeLevel, function(err, feePerKb) {
-
- // KB to send max
- var feeToSendMaxSat = parseInt(((self.totalBytesToSendMax * feePerKb) / 1000.).toFixed(0));
- self.currentFeePerKb = feePerKb;
-
- if (self.availableBalanceSat > feeToSendMaxSat) {
- self.availableMaxBalance = strip((self.availableBalanceSat - feeToSendMaxSat) * self.satToUnit);
- self.feeToSendMaxStr = profileService.formatAmount(feeToSendMaxSat) + ' ' + self.unitName;
- } else {
- self.feeToSendMaxStr = null;
- }
-
- if (cb) return cb(self.currentFeePerKb, self.availableMaxBalance, self.feeToSendMaxStr);
- });
- }
-
- };
-
- self.setCurrentFeeLevel = function(level) {
- self.currentFeeLevel = level || configService.getSync().wallet.settings.feeLevel || 'normal';
- self.setFeeAndSendMax();
- };
-
-
- self.setFeesOpts = function() {
- var fc = profileService.focusedClient;
- if (!fc) return;
- $timeout(function() {
- feeService.getFeeLevels(function(levels) {
- self.feeLevels = levels;
- $rootScope.$apply();
- });
- });
- };
+ };
self.updateBalance = function() {
var fc = profileService.focusedClient;
@@ -666,11 +618,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r
self.alternativeName = config.alternativeName;
self.alternativeIsoCode = config.alternativeIsoCode;
- // Set fee level and max value to send all
- if (!self.currentFeeLevel) {
- self.setCurrentFeeLevel();
- }
-
// Check address
addressService.isUsed(self.walletId, balance.byAddress, function(err, used) {
if (used) {
@@ -1251,14 +1198,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r
self.updateAll();
});
- $rootScope.$on('Local/FeeLevelUpdated', function(event, level) {
- self.setCurrentFeeLevel(level);
- });
-
- $rootScope.$on('Local/SetFeeSendMax', function(event, cb) {
- self.setFeeAndSendMax(cb);
- });
-
$rootScope.$on('Local/ProfileBound', function() {
storageService.getRemotePrefsStoredFlag(function(err, val) {
if (err || val) return;
diff --git a/src/js/controllers/preferencesFee.js b/src/js/controllers/preferencesFee.js
index 7e8cfd98f..9093dc236 100644
--- a/src/js/controllers/preferencesFee.js
+++ b/src/js/controllers/preferencesFee.js
@@ -1,9 +1,22 @@
'use strict';
angular.module('copayApp.controllers').controller('preferencesFeeController',
- function($rootScope, configService) {
+ function($scope, $rootScope, configService, feeService) {
+
+ this.init = function() {
+ var self = this;
+ this.loading = true;
+ feeService.getFeeLevels(function(levels) {
+ self.loading = false;
+ self.feeOpts = feeService.feeOpts;
+ self.currentFeeLevel = feeService.getCurrentFeeLevel();
+ self.feeLevels = levels;
+ $scope.$apply();
+ });
+ };
this.save = function(newFee) {
+ var self = this;
var opts = {
wallet: {
settings: {
@@ -11,10 +24,10 @@ angular.module('copayApp.controllers').controller('preferencesFeeController',
}
}
};
- $rootScope.$emit('Local/FeeLevelUpdated', newFee);
configService.set(opts, function(err) {
if (err) $log.debug(err);
+ self.currentFeeLevel = feeService.getCurrentFeeLevel();
});
};
diff --git a/src/js/controllers/preferencesGlobal.js b/src/js/controllers/preferencesGlobal.js
index d7ce7bf93..768b587a6 100644
--- a/src/js/controllers/preferencesGlobal.js
+++ b/src/js/controllers/preferencesGlobal.js
@@ -1,7 +1,7 @@
'use strict';
angular.module('copayApp.controllers').controller('preferencesGlobalController',
- function($scope, $rootScope, $log, configService, uxLanguage, pushNotificationsService, profileService) {
+ function($scope, $rootScope, $log, configService, uxLanguage, pushNotificationsService, profileService, feeService) {
this.init = function() {
var config = configService.getSync();
@@ -11,6 +11,8 @@ angular.module('copayApp.controllers').controller('preferencesGlobalController',
name: config.wallet.settings.alternativeName,
isoCode: config.wallet.settings.alternativeIsoCode
};
+ this.feeOpts = feeService.feeOpts;
+ this.currentFeeLevel = feeService.getCurrentFeeLevel();
$scope.spendUnconfirmed = config.wallet.spendUnconfirmed;
$scope.glideraEnabled = config.glidera.enabled;
$scope.glideraTestnet = config.glidera.testnet;
diff --git a/src/js/controllers/sellGlidera.js b/src/js/controllers/sellGlidera.js
index 3f4f9f612..49c1110cf 100644
--- a/src/js/controllers/sellGlidera.js
+++ b/src/js/controllers/sellGlidera.js
@@ -11,7 +11,6 @@ angular.module('copayApp.controllers').controller('sellGlideraController',
this.error = null;
this.loading = null;
this.currentSpendUnconfirmed = config.wallet.spendUnconfirmed;
- this.currentFeeLevel = config.wallet.settings.feeLevel || 'normal';
var fc;
window.ignoreMobilePause = true;
@@ -151,7 +150,7 @@ angular.module('copayApp.controllers').controller('sellGlideraController',
}
var amount = parseInt((self.sellPrice.qty * 100000000).toFixed(0));
- feeService.getCurrentFeeValue(self.currentFeeLevel, function(err, feePerKb) {
+ feeService.getCurrentFeeValue(function(err, feePerKb) {
if (err) $log.debug(err);
fc.sendTxProposal({
toAddress: sellAddress,
diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js
index 144f6867c..528d1e305 100644
--- a/src/js/controllers/walletHome.js
+++ b/src/js/controllers/walletHome.js
@@ -847,7 +847,6 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi
var fc = profileService.focusedClient;
var unitToSat = this.unitToSatoshi;
var currentSpendUnconfirmed = configWallet.spendUnconfirmed;
- var currentFeeLevel = walletSettings.feeLevel || 'normal';
var outputs = [];
@@ -1230,18 +1229,30 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi
this.setForm(null, amount, null);
};
- this.sendAll = function() {
+ this.sendAll = function(totalBytesToSendMax, availableBalanceSat) {
var self = this;
- self.error = null;
- self.setOngoingProcess(gettextCatalog.getString('Calculating fee'));
- $rootScope.$emit('Local/SetFeeSendMax', function(currentFeePerKb, availableMaxBalance, feeToSendMaxStr) {
+ var availableMaxBalance;
+ var feeToSendMaxStr;
+ this.error = null;
+ this.setOngoingProcess(gettextCatalog.getString('Calculating fee'));
+
+ feeService.getCurrentFeeValue(function(err, feePerKb) {
self.setOngoingProcess();
- if (lodash.isNull(currentFeePerKb)) {
- self.error = gettext('Could not calculate fee');
- $scope.$apply();
+ if (err || lodash.isNull(feePerKb)) {
+ self.error = gettext('Could not get fee value');
return;
}
- self.lockedCurrentFeePerKb = currentFeePerKb;
+
+ var feeToSendMaxSat = parseInt(((totalBytesToSendMax * feePerKb) / 1000.).toFixed(0));
+ if (availableBalanceSat > feeToSendMaxSat) {
+ self.lockedCurrentFeePerKb = feePerKb;
+ availableMaxBalance = strip((availableBalanceSat - feeToSendMaxSat) * self.satToUnit);
+ feeToSendMaxStr = profileService.formatAmount(feeToSendMaxSat) + ' ' + self.unitName;
+ } else {
+ self.error = gettext('Not enought funds for fee');
+ return;
+ }
+
var msg = gettextCatalog.getString("{{fee}} will be deducted for bitcoin networking fees", {
fee: feeToSendMaxStr
});
diff --git a/src/js/services/feeService.js b/src/js/services/feeService.js
index f2316f733..fccfe9b90 100644
--- a/src/js/services/feeService.js
+++ b/src/js/services/feeService.js
@@ -10,10 +10,13 @@ angular.module('copayApp.services').factory('feeService', function($log, profile
economy: gettextCatalog.getString('Economy')
};
- root.getCurrentFeeValue = function(currentSendFeeLevel, cb) {
+ root.getCurrentFeeLevel = function() {
+ return configService.getSync().wallet.settings.feeLevel || 'normal';
+ };
+
+ root.getCurrentFeeValue = function(cb) {
var fc = profileService.focusedClient;
- var config = configService.getSync().wallet.settings;
- var feeLevel = currentSendFeeLevel || config.feeLevel || 'normal';
+ var feeLevel = root.getCurrentFeeLevel();
// static fee
var fee = 10000;
fc.getFeeLevels(fc.credentials.network, function(err, levels) {
@@ -30,8 +33,7 @@ angular.module('copayApp.services').factory('feeService', function($log, profile
root.getFeeLevels = function(cb) {
var fc = profileService.focusedClient;
- var config = configService.getSync().wallet.settings;
- var unitName = config.unitName;
+ var unitName = configService.getSync().wallet.settings.unitName;
fc.getFeeLevels('livenet', function(errLivenet, levelsLivenet) {
fc.getFeeLevels('testnet', function(errTestnet, levelsTestnet) {
diff --git a/src/js/services/txService.js b/src/js/services/txService.js
index 97cb78089..4b3728bb0 100644
--- a/src/js/services/txService.js
+++ b/src/js/services/txService.js
@@ -92,18 +92,13 @@ angular.module('copayApp.services').factory('txService', function($rootScope, pr
root.createTx = function(opts, cb) {
var fc = profileService.focusedClient;
- var config = configService.getSync();
- var configWallet = config.wallet;
- var walletSettings = configWallet.settings;
-
- var currentSpendUnconfirmed = configWallet.spendUnconfirmed;
- var currentFeeLevel = walletSettings.feeLevel || 'normal';
+ var currentSpendUnconfirmed = configService.getSync().wallet.spendUnconfirmed;
var getFee = function(cb) {
if (opts.lockedCurrentFeePerKb) {
cb(null, opts.lockedCurrentFeePerKb);
} else {
- feeService.getCurrentFeeValue(currentFeeLevel, cb);
+ feeService.getCurrentFeeValue(cb);
}
};