56 lines
1.3 KiB
JavaScript
Executable file
56 lines
1.3 KiB
JavaScript
Executable file
var TransactionDatabase = function () {
|
|
this.txs = [];
|
|
this.txIndex = {};
|
|
};
|
|
|
|
EventEmitter.augment(TransactionDatabase.prototype);
|
|
|
|
TransactionDatabase.prototype.addTransaction = function (tx) {
|
|
this.addTransactionNoUpdate(tx);
|
|
$(this).trigger('update');
|
|
};
|
|
|
|
TransactionDatabase.prototype.addTransactionNoUpdate = function (tx) {
|
|
// Return if transaction is already known
|
|
if (this.txIndex[tx.hash]) {
|
|
return;
|
|
}
|
|
|
|
this.txs.push(new Bitcoin.Transaction(tx));
|
|
this.txIndex[tx.hash] = tx;
|
|
};
|
|
|
|
TransactionDatabase.prototype.removeTransaction = function (hash) {
|
|
this.removeTransactionNoUpdate(hash);
|
|
$(this).trigger('update');
|
|
};
|
|
|
|
TransactionDatabase.prototype.removeTransactionNoUpdate = function (hash) {
|
|
var tx = this.txIndex[hash];
|
|
|
|
if (!tx) {
|
|
// If the tx is not in the index, we don't actually waste our
|
|
// time looping through the array.
|
|
return;
|
|
}
|
|
|
|
for (var i = 0, l = this.txs.length; i < l; i++) {
|
|
if (this.txs[i].hash == hash) {
|
|
this.txs.splice(i, 1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
delete this.txIndex[hash];
|
|
};
|
|
|
|
TransactionDatabase.prototype.loadTransactions = function (txs) {
|
|
for (var i = 0; i < txs.length; i++) {
|
|
this.addTransactionNoUpdate(txs[i]);
|
|
}
|
|
$(this).trigger('update');
|
|
};
|
|
|
|
TransactionDatabase.prototype.getTransactions = function () {
|
|
return this.txs;
|
|
};
|