show status balance

This commit is contained in:
Ivan Socolsky 2016-08-17 18:48:30 -03:00
commit e3076d18ab
No known key found for this signature in database
GPG key ID: FAECE6A05FAA4F56
4 changed files with 90 additions and 88 deletions

View file

@ -93,11 +93,10 @@ angular.module('copayApp.controllers').controller('tabHomeController',
i = 0;
lodash.each(wallets, function(wallet) {
walletService.updateStatus(wallet, {}, function(err) {
var status = wallet.status;
walletService.getStatus(wallet, {}, function(err, status) {
if (err) {
console.log('[tab-home.js.35:err:]',$log.error(err)); //TODO
return;
console.log('[tab-home.js.35:err:]', $log.error(err)); //TODO
return;
} // TODO
if (status.pendingTxps && status.pendingTxps[0]) {
txps = txps.concat(status.pendingTxps);

View file

@ -61,12 +61,21 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
});
};
$scope.updateAll = function()  {
$scope.update();
}
$scope.update = function() {
walletService.updateStatus(wallet, {
force: true
}, function(err, status) {
if (err) {} // TODO
});
$scope.updating = true;
$timeout(function() {
walletService.getStatus(wallet, {
force: true
}, function(err, status) {
if (err) {} // TODO
$scope.status = status;
$scope.updating = false;
});
})
};
$scope.hideToggle = function() {
@ -85,9 +94,15 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
$scope.wallet = wallet;
if (wallet) {
walletService.updateStatus(wallet, {}, function(err, status) {
console.log(status);
walletService.getStatus(wallet, {}, function(err, status) {
console.log('*** [walletDetails.js ln89] status:', status); // TODO
if (err) {} // TODO
$scope.status = status;
});
walletService.getHistory(wallet, {}, function(err, txHistory) {
console.log('*** [walletDetails.js ln93] txHistory:', txHistory); // TODO
if (err) {} // TODO
$scope.txHistory = txHistory;
});
}
});

View file

@ -128,64 +128,71 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
var config = configService.getSync().wallet.settings;
var cache = wallet.cachedStatus;
// Address with Balance
wallet.balanceByAddress = balance.byAddress;
cache.balanceByAddress = balance.byAddress;
// Spend unconfirmed funds
if (wallet.spendUnconfirmed) {
wallet.totalBalanceSat = balance.totalAmount;
wallet.lockedBalanceSat = balance.lockedAmount;
wallet.availableBalanceSat = balance.availableAmount;
wallet.totalBytesToSendMax = balance.totalBytesToSendMax;
wallet.pendingAmount = null;
if (cache.spendUnconfirmed) {
cache.totalBalanceSat = balance.totalAmount;
cache.lockedBalanceSat = balance.lockedAmount;
cache.availableBalanceSat = balance.availableAmount;
cache.totalBytesToSendMax = balance.totalBytesToSendMax;
cache.pendingAmount = null;
} else {
wallet.totalBalanceSat = balance.totalConfirmedAmount;
wallet.lockedBalanceSat = balance.lockedConfirmedAmount;
wallet.availableBalanceSat = balance.availableConfirmedAmount;
wallet.totalBytesToSendMax = balance.totalBytesToSendConfirmedMax;
wallet.pendingAmount = balance.totalAmount - balance.totalConfirmedAmount;
cache.totalBalanceSat = balance.totalConfirmedAmount;
cache.lockedBalanceSat = balance.lockedConfirmedAmount;
cache.availableBalanceSat = balance.availableConfirmedAmount;
cache.totalBytesToSendMax = balance.totalBytesToSendConfirmedMax;
cache.pendingAmount = balance.totalAmount - balance.totalConfirmedAmount;
}
// Selected unit
wallet.unitToSatoshi = config.unitToSatoshi;
wallet.satToUnit = 1 / wallet.unitToSatoshi;
wallet.unitName = config.unitName;
cache.unitToSatoshi = config.unitToSatoshi;
cache.satToUnit = 1 / cache.unitToSatoshi;
cache.unitName = config.unitName;
//STR
wallet.totalBalanceStr = root.formatAmount(wallet.totalBalanceSat) + ' ' + wallet.unitName;
wallet.lockedBalanceStr = root.formatAmount(wallet.lockedBalanceSat) + ' ' + wallet.unitName;
wallet.availableBalanceStr = root.formatAmount(wallet.availableBalanceSat) + ' ' + wallet.unitName;
cache.totalBalanceStr = root.formatAmount(cache.totalBalanceSat) + ' ' + cache.unitName;
cache.lockedBalanceStr = root.formatAmount(cache.lockedBalanceSat) + ' ' + cache.unitName;
cache.availableBalanceStr = root.formatAmount(cache.availableBalanceSat) + ' ' + cache.unitName;
if (wallet.pendingAmount) {
wallet.pendingAmountStr = root.formatAmount(wallet.pendingAmount) + ' ' + wallet.unitName;
if (cache.pendingAmount) {
cache.pendingAmountStr = root.formatAmount(cache.pendingAmount) + ' ' + cache.unitName;
} else {
wallet.pendingAmountStr = null;
cache.pendingAmountStr = null;
}
wallet.alternativeName = config.alternativeName;
wallet.alternativeIsoCode = config.alternativeIsoCode;
cache.alternativeName = config.alternativeName;
cache.alternativeIsoCode = config.alternativeIsoCode;
rateService.whenAvailable(function() {
var totalBalanceAlternative = rateService.toFiat(wallet.totalBalanceSat, wallet.alternativeIsoCode);
var lockedBalanceAlternative = rateService.toFiat(wallet.lockedBalanceSat, wallet.alternativeIsoCode);
var alternativeConversionRate = rateService.toFiat(100000000, wallet.alternativeIsoCode);
var totalBalanceAlternative = rateService.toFiat(cache.totalBalanceSat, cache.alternativeIsoCode);
var lockedBalanceAlternative = rateService.toFiat(cache.lockedBalanceSat, cache.alternativeIsoCode);
var alternativeConversionRate = rateService.toFiat(100000000, cache.alternativeIsoCode);
wallet.totalBalanceAlternative = $filter('formatFiatAmount')(totalBalanceAlternative);
wallet.lockedBalanceAlternative = $filter('formatFiatAmount')(lockedBalanceAlternative);
wallet.alternativeConversionRate = $filter('formatFiatAmount')(alternativeConversionRate);
cache.totalBalanceAlternative = $filter('formatFiatAmount')(totalBalanceAlternative);
cache.lockedBalanceAlternative = $filter('formatFiatAmount')(lockedBalanceAlternative);
cache.alternativeConversionRate = $filter('formatFiatAmount')(alternativeConversionRate);
wallet.alternativeBalanceAvailable = true;
wallet.isRateAvailable = true;
cache.alternativeBalanceAvailable = true;
cache.isRateAvailable = true;
});
};
function cacheStatus = (status) {
wallet.status = status;
wallet.statusUpdatedOn = Date.now();
wallet.isValid = true;
function isStatusCached() {
return wallet.cachedStatus && wallet.cachedStatus.isValid;
};
function cacheStatus(status) {
wallet.cachedStatus = status ||  {};
var cache = wallet.cachedStatus;
cache.statusUpdatedOn = Date.now();
cache.isValid = true;
cache.email = status.preferences ? status.preferences.email : null;
cacheBalance(wallet, status.balance);
wallet.email = status.preferences.email;
};
function walletStatusHash(status) {
@ -193,7 +200,7 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
};
function _getStatus(initStatusHash, tries, cb) {
if (wallet.isValid && !opts.force) return cb(null, wallet.status);
if (isStatusCached() && !opts.force) return cb(null, wallet.cachedStatus);
tries = tries || 0;
@ -215,7 +222,7 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
$log.debug('Got Wallet Status for:' + wallet.credentials.walletName);
root.cacheStatus(wallet, status);
cacheStatus(status);
// wallet.setPendingTxps(status.pendingTxps);
return cb(null, status);
@ -354,7 +361,6 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
// First update
if (walletId == wallet.credentials.walletId) {
wallet.completeHistory = txsFromLocal;
setCompactTxHistory(wallet);
}
if (wallet.historyUpdateInProgress)
@ -388,7 +394,6 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
var newHistory = processNewTxs(wallet, newTxs);
newHistory = lodash.compact(newHistory.concat(confirmedTxs));
wallet.completeHistory = newHistory;
setCompactTxHistory(wallet);
}
}
});
@ -438,7 +443,6 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
// Final update
if (walletId == wallet.credentials.walletId) {
wallet.completeHistory = newHistory;
setCompactTxHistory(wallet);
}
return storageService.setTxHistory(historyToSave, walletId, function() {
@ -452,28 +456,21 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
};
root.updateHistory = function(wallet, cb) {
root.getHistory = function(wallet, opts, cb) {
opts = opts || {};
opts.skip = opts.skip || 0;
opts.limit = opts.limit || root.HISTORY_SHOW_LIMIT;
var walletId = wallet.credentials.walletId;
if (!wallet.isComplete()) return cb();
$log.debug('Updating Transaction History');
wallet.txHistoryError = false;
wallet.updatingTxHistory = true;
$timeout(function() {
updateLocalTxHistory(wallet, function(err) {
wallet.historyUpdateInProgress = wallet.updatingTxHistory = false;
wallet.loadingWallet = false;
wallet.txProgress = 0;
if (err)
wallet.txHistoryError = true;
$timeout(function() {
wallet.newTx = false
});
});
updateLocalTxHistory(wallet, function(err) {
if (err) return cb(err);
var txs = wallet.completeHistory ? wallet.completeHistory.slice(opts.skip, opts.limit) : null;
return cb(err, txs);
});
};
@ -662,15 +659,6 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
});
};
var setCompactTxHistory = function(wallet) {
// TODO
wallet.isSearching = false;
wallet.nextTxHistory = root.HISTORY_SHOW_LIMIT;
wallet.txHistory = wallet.completeHistory ? wallet.completeHistory.slice(0, root.HISTORY_SHOW_LIMIT) : null;
wallet.historyShowMore = wallet.completeHistory ? wallet.completeHistory.length > root.HISTORY_SHOW_LIMIT : null;
};
root.debounceUpdateHistory = lodash.debounce(function() {
root.updateHistory();
}, 1000);