fetch history and load it from local

This commit is contained in:
Javier 2015-10-09 15:23:04 -03:00
parent 86f356bca3
commit 5cbf808dc0
2 changed files with 93 additions and 136 deletions

View File

@ -513,18 +513,12 @@
</div>
</div>
</div>
<!-- <div ng-if="!index.isCordova && index.txHistory[0] && !index.updatingTxHistory" class="m20t text-center"> -->
<div>
<div ng-if="!index.isCordova && index.txHistory[0] && !index.updatingTxHistory" class="m20t text-center">
<input id="export_file" type="file" nwsaveas="Copay-{{index.alias || index.walletName}}.csv" accept=".csv" style="display:none">
<a class="text-gray size-12" ng-click="index.csvHistory2();">
<a class="text-gray size-12" ng-click="index.csvHistory();">
<i class="fi-page-export-csv"></i>
<span translate>Download CSV file</span>
</a>
<a class="text-gray size-12" ng-click="index.getLocalHistory();">
<i class="fi-page-export-csv"></i>
<span translate>READ CSV file</span>
</a>
</div>
<div class="extra-margin-bottom"></div>
</div> <!-- END History -->

View File

@ -6,7 +6,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r
self.isChromeApp = isChromeApp;
self.isSafari = isMobile.Safari();
self.onGoingProcess = {};
self.limitHistory = 5;
self.limitHistory = 6;
function strip(number) {
return (parseFloat(number.toPrecision(12)));
@ -487,7 +487,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r
var config = configService.getSync().wallet.settings;
var now = Math.floor(Date.now() / 1000);
var c = 0;
self.txHistoryPaging = txs[self.limitHistory] ? true : false;
self.hasUnsafeConfirmed = false;
lodash.each(txs, function(tx) {
tx = txFormatService.processTx(tx);
@ -738,6 +738,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r
if (!fc.isComplete()) return;
var step = 6;
self._getHistory();
var unique = {};
@ -768,46 +769,119 @@ angular.module('copayApp.controllers').controller('indexController', function($r
var self = this;
var allTxs = [];
$log.debug('Fetching transactions from History');
self.setOngoingProcess('generatingCSV', true); // cambiar esto
self.setOngoingProcess('generatingCSV', true); // change this
$timeout(function() {
getHistory(null, function(err, txs) {
self.setOngoingProcess('generatingCSV', false); // cambiar esto
self.setOngoingProcess('generatingCSV', false); // change this
if (err)
self.handleError(err);
else
$log.debug('Wallet Transaction History:', txs);
// verificar wallets sin transacciones (pendiente)
storageService.setTxHistory(JSON.stringify(txs), fc.credentials.walletId, function() {
storageService.setTxHistory(JSON.stringify(txs), walletId, function() {
return;
});
});
});
};
self.getLocalHistory = function(walletId, cb) {
storageService.getTxHistory(walletId, function(err, txH) {
if (err) return cb(err);
if (!txH) return cb($log.debug('There is not transactions stored'));
self.areEqualsTxs = function(firstTx, secondTx) {
if (firstTx.txid == secondTx.txid)
return true;
else
return false;
}
var txHistory;
self.updateLocalTxHistory = 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 txsFromLocal;
try {
txHistory = JSON.parse(txH);
txsFromLocal = JSON.parse(txs);
} catch (ex) {
return cb(ex);
}
// console.log('From getLocalHistory: ', txHistory);
// lodash.each(txHistory, function(tx) {
// console.log(tx);
// });
if (!txsFromLocal)
txsFromLocal = [];
return cb(null, txHistory);
var count = 0;
fillTxsObject(txsToPush);
function fillTxsObject(txsToPush) {
self.makeTxHistoryRequest(txsToPush, txsFromLocal, function(err, skipLoop, txsResult) {
if (err) return cb(err);
if (skipLoop) {
self.txHistory = [];
self.setTxHistory(lodash.compact(txsResult.concat(txsFromLocal)));
storageService.setTxHistory(JSON.stringify(self.txHistory), c.walletId, function() {
return cb(null);
});
} else
fillTxsObject(txsResult);
});
};
});
}
self.makeTxHistoryRequest = function(txsToPush, localTx, cb) {
var fc = profileService.focusedClient;
var c = fc.credentials;
var skipLoop = false;
fc.getTxHistory({
skip: self.skipHistory,
limit: self.limitHistory + 1
}, function(err, txsFromBWC) {
if (err) return cb(err);
if (!txsFromBWC[0]) {
skipLoop = true;
$log.debug('There is not transactions stored');
}
lodash.each(txsFromBWC, function(t) {
if (!localTx[0]) txsToPush.push(t);
else {
if (!self.areEqualsTxs(t, localTx[0]) && !skipLoop) {
txsToPush.push(t);
} else {
skipLoop = true;
}
}
});
self.skipHistory = self.skipHistory + self.limitHistory;
return cb(null, skipLoop, txsToPush);
});
}
self.updateTxHistory = function(skip) {
$log.debug('Updating Transaction History');
self.skipHistory = skip || 0;
self.txHistoryError = false;
self.updatingTxHistory = true;
self.txHistoryPaging = false;
$timeout(function() {
self.updateLocalTxHistory(function(err) {
if (err) self.txHistoryError = true;
self.updatingTxHistory = false;
$rootScope.$apply();
});
});
};
self.debouncedUpdateHistory = lodash.throttle(function() {
self.updateTxHistory();
}, 5000);
// self.updateTxHistory = function(skip) {
// var fc = profileService.focusedClient;
// if (!fc || !fc.isComplete()) return;
@ -848,117 +922,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r
// self.updateTxHistory();
// }, 5000);
self.updateTxHistory = function(skip) {
var fc = profileService.focusedClient;
if (!fc || !fc.isComplete()) return;
if (!skip) self.txHistory = [];
$log.debug('Updating Transaction History');
self.skipHistory = skip || 0;
self.txHistoryError = false;
self.updatingTxHistory = true;
self.txHistoryPaging = false;
$timeout(function() {
storageService.getTxHistoryFlag(fc.credentials.walletId, function(err, historyFlag) {
if (err) {
$log.debug('TxHistory ERROR:', err);
if (skip) self.handleError(err);
self.txHistoryError = true;
return;
}
if (historyFlag) {
// history from local storage
self.getLocalHistory(fc.credentials.walletId, function(err, txsFromLocal) {
self.updatingTxHistory = false;
if (err) {
$log.debug('TxHistory ERROR:', err);
if (skip) self.handleError(err);
self.txHistoryError = true;
return;
}
self.setTxHistory(txsFromLocal);
console.log('Loaded from local.');
$log.debug('Wallet Transaction History:', txsFromLocal);
storageService.setTxHistoryFlag(true, fc.credentials.walletId, function() {
return;
});
});
} else {
// history from BWC
fc.getTxHistory({
skip: self.skipHistory,
limit: self.limitHistory + 1
}, function(err, txsFromBWC) {
self.updatingTxHistory = false;
if (err) {
$log.debug('TxHistory ERROR:', err);
if (skip) self.handleError(err);
self.txHistoryError = true;
return;
} else {
if (!txsFromBWC[0])
return $log.debug('There is not transactions stored');
self.setTxHistory(txsFromBWC);
$log.debug('Wallet Transaction History:', txsFromBWC);
storageService.setTxHistory(JSON.stringify(txsFromBWC), fc.credentials.walletId, function() {
storageService.setTxHistoryFlag(true, fc.credentials.walletId, function() {
return;
});
});
console.log('Loaded from BWC.');
// // Check if the last tx on server is equal to the last tx in local storage
// // console.log('Last tx from BWC: ', txsFromBWC[0]);
// self.getLocalHistory(function(err, txsFromLocal) {
// // console.log('Last tx from LocalStorage: ', txsFromLocal[0]);
// if (err) {
// $log.debug('TxHistory ERROR:', err);
// if (skip) self.handleError(err);
// self.txHistoryError = true;
// }
// if (self.areEqualsTxs(txsFromBWC[0], txsFromLocal[0])) {
// self.setTxHistory(txsFromLocal);
// $log.debug('Wallet Transaction History:', txsFromLocal);
// storageService.setTxHistoryFlag(true, function() {
// return;
// });
// } else {
// self.setTxHistory(txsFromBWC);
// $log.debug('Wallet Transaction History:', txsFromBWC);
// storageService.setTxHistory(JSON.stringify(txsFromBWC), function() {
// return;
// });
// storageService.setTxHistoryFlag(false, function() {
// return;
// });
// }
// });
}
});
}
});
self.skipHistory = self.skipHistory + self.limitHistory;
self.updatingTxHistory = false;
$rootScope.$apply();
});
};
self.debouncedUpdateHistory = lodash.throttle(function() {
self.updateTxHistory();
}, 5000);
self.areEqualsTxs = function(firstTx, secondTx) {
if (firstTx.txid == secondTx.txid) // enough to determinate it?
return true;
else
return false;
}
self.showErrorPopup = function(msg, cb) {
$log.warn('Showing err popup:' + msg);
self.showAlert = {