refactor on local transactions methods
This commit is contained in:
parent
ce47cb0c65
commit
0d022523b0
2 changed files with 37 additions and 42 deletions
|
|
@ -455,13 +455,8 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m20t text-center" ng-show="index.txHistoryPaging || index.updatingTxHistory">
|
||||
<div class="row m20t text-center" ng-show="index.updatingTxHistory">
|
||||
<div class="columns large-12 medium-12 small-12">
|
||||
<button class="outline light-gray round small expand m0"
|
||||
ng-click="index.updateTxHistory(index.skipHistory)"
|
||||
ng-if="!index.updatingTxHistory">
|
||||
<span translate>More</span> <i class="icon-arrow-down4 ng-scope"></i>
|
||||
</button>
|
||||
<div class="spinner" ng-if="index.updatingTxHistory">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, lodash, go, profileService, configService, isCordova, rateService, storageService, addressService, gettext, gettextCatalog, amMoment, nodeWebkit, addonManager, feeService, isChromeApp, bwsError, txFormatService, uxLanguage, $state, glideraService, isMobile) {
|
||||
var self = this;
|
||||
var CONFIRMATIONS = 12;
|
||||
var SOFT_CONFIRMATION_LIMIT = 12;
|
||||
self.isCordova = isCordova;
|
||||
self.isChromeApp = isChromeApp;
|
||||
self.isSafari = isMobile.Safari();
|
||||
|
|
@ -85,7 +85,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r
|
|||
self.txHistory = [];
|
||||
self.txHistoryUnique = {};
|
||||
self.balanceByAddress = null;
|
||||
self.txHistoryPaging = false;
|
||||
self.pendingTxProposalsCountForUs = null;
|
||||
self.setSpendUnconfirmed();
|
||||
|
||||
|
|
@ -647,18 +646,17 @@ angular.module('copayApp.controllers').controller('indexController', function($r
|
|||
}
|
||||
|
||||
var step = 6;
|
||||
|
||||
var unique = {};
|
||||
|
||||
function getHistory(skip, cb) {
|
||||
function getHistory(cb) {
|
||||
storageService.getTxHistory(c.walletId, function(err, txs) {
|
||||
if (err) return cb(err);
|
||||
|
||||
var txsFromLocal;
|
||||
var txsFromLocal = [];
|
||||
try {
|
||||
txsFromLocal = JSON.parse(txs);
|
||||
} catch (ex) {
|
||||
return cb(ex);
|
||||
$log.warn(ex);
|
||||
}
|
||||
|
||||
allTxs.push(txsFromLocal);
|
||||
|
|
@ -667,7 +665,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r
|
|||
}
|
||||
|
||||
if (isCordova) {
|
||||
$log.info('Not available on mobile');
|
||||
$log.info('CSV generation not available in mobile');
|
||||
return;
|
||||
}
|
||||
var isNode = nodeWebkit.isDefined();
|
||||
|
|
@ -681,7 +679,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r
|
|||
self.setOngoingProcess('generatingCSV', true);
|
||||
|
||||
$timeout(function() {
|
||||
getHistory(null, function(err, txs) {
|
||||
getHistory(function(err, txs) {
|
||||
self.setOngoingProcess('generatingCSV', false);
|
||||
if (err) {
|
||||
self.handleError(err);
|
||||
|
|
@ -742,89 +740,91 @@ angular.module('copayApp.controllers').controller('indexController', function($r
|
|||
return false;
|
||||
}
|
||||
|
||||
self.removeLessThanSixConfirmations = function(txs) {
|
||||
self.removeSoftConfirmedTx = function(txs) {
|
||||
return lodash.map(txs, function(tx) {
|
||||
if (tx.confirmations >= CONFIRMATIONS)
|
||||
if (tx.confirmations >= SOFT_CONFIRMATION_LIMIT)
|
||||
return tx;
|
||||
});
|
||||
}
|
||||
|
||||
self.updateLocalTxHistory = function(cb) {
|
||||
self.getConfirmedTxs = function(cb) {
|
||||
var fc = profileService.focusedClient;
|
||||
var c = fc.credentials;
|
||||
var txsToPush = [];
|
||||
|
||||
storageService.getTxHistory(c.walletId, function(err, txs) {
|
||||
if (err) return cb(err);
|
||||
|
||||
var localTxs;
|
||||
var localTxs = [];
|
||||
try {
|
||||
localTxs = JSON.parse(txs);
|
||||
} catch (ex) {
|
||||
return cb(ex);
|
||||
$log.warn(ex);
|
||||
}
|
||||
|
||||
if (!localTxs)
|
||||
localTxs = [];
|
||||
return cb(null, self.removeSoftConfirmedTx(localTxs));
|
||||
});
|
||||
}
|
||||
|
||||
var txsFromLocal = self.removeLessThanSixConfirmations(localTxs);
|
||||
self.updateLocalTxHistory = function(cb) {
|
||||
self.getConfirmedTxs(function(err, txsFromLocal) {
|
||||
if (err) return cb(err);
|
||||
|
||||
var count = 0;
|
||||
fillTxsObject(txsToPush);
|
||||
var fc = profileService.focusedClient;
|
||||
var c = fc.credentials;
|
||||
fillTxsObject();
|
||||
|
||||
function fillTxsObject(txsToPush) {
|
||||
self.makeTxHistoryRequest(txsToPush, txsFromLocal, function(err, exitLoop, txsResult) {
|
||||
function fillTxsObject(txsResult, index) {
|
||||
txsResult = txsResult || [];
|
||||
index = index || 0;
|
||||
|
||||
self.makeTxHistoryRequest(txsResult, index, txsFromLocal[0], function(err, newIndex, exitLoop) {
|
||||
if (err) return cb(err);
|
||||
if (exitLoop) {
|
||||
self.txHistory = [];
|
||||
self.setTxHistory(lodash.compact(txsResult.concat(txsFromLocal)));
|
||||
storageService.setTxHistory(JSON.stringify(self.txHistory), c.walletId, function() {
|
||||
return storageService.setTxHistory(JSON.stringify(self.txHistory), c.walletId, function() {
|
||||
return cb(null);
|
||||
});
|
||||
} else
|
||||
fillTxsObject(txsResult);
|
||||
}
|
||||
fillTxsObject(txsResult, newIndex);
|
||||
});
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
self.makeTxHistoryRequest = function(txsToPush, localTx, cb) {
|
||||
self.makeTxHistoryRequest = function(txsResult, index, endingTx, cb) {
|
||||
var fc = profileService.focusedClient;
|
||||
var c = fc.credentials;
|
||||
var exitLoop = false;
|
||||
|
||||
fc.getTxHistory({
|
||||
skip: self.skipHistory,
|
||||
skip: index,
|
||||
limit: self.limitHistory + 1
|
||||
}, function(err, txsFromBWC) {
|
||||
if (err) return cb(err);
|
||||
|
||||
if (!txsFromBWC[0]) {
|
||||
if (!txsFromBWC[0])
|
||||
exitLoop = true;
|
||||
$log.debug('There is not transactions stored');
|
||||
}
|
||||
|
||||
lodash.each(txsFromBWC, function(t) {
|
||||
if (!localTx[0]) txsToPush.push(t);
|
||||
if (!endingTx) txsResult.push(t);
|
||||
else {
|
||||
if (!self.stopSync(t, localTx[0]) && !exitLoop) {
|
||||
txsToPush.push(t);
|
||||
if (!self.stopSync(t, endingTx) && !exitLoop) {
|
||||
txsResult.push(t);
|
||||
} else {
|
||||
exitLoop = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
self.skipHistory = self.skipHistory + self.limitHistory;
|
||||
return cb(null, exitLoop, txsToPush);
|
||||
index = index + self.limitHistory;
|
||||
return cb(null, index, exitLoop);
|
||||
});
|
||||
}
|
||||
|
||||
self.updateHistory = function() {
|
||||
$log.debug('Updating Transaction History');
|
||||
self.skipHistory = 0;
|
||||
self.txHistoryError = false;
|
||||
self.updatingTxHistory = true;
|
||||
self.txHistoryPaging = false;
|
||||
|
||||
$timeout(function() {
|
||||
self.updateLocalTxHistory(function(err) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue