Browse Source

Split getDescription() into two functions.

hk-custom-address
Stefan Thomas 14 years ago
parent
commit
27ceffaee3
  1. 49
      src/transaction.js

49
src/transaction.js

@ -173,8 +173,11 @@
return newTx; return newTx;
}; };
Transaction.prototype.getDescription = function (wallet) { /**
if (!(wallet instanceof Bitcoin.Wallet)) return ""; * Analyze how this transaction affects a wallet.
*/
Transaction.prototype.analyze = function (wallet) {
if (!(wallet instanceof Bitcoin.Wallet)) return null;
var allFromMe = true, var allFromMe = true,
allToMe = true, allToMe = true,
@ -192,8 +195,8 @@
} }
firstRecvHash = hash; firstRecvHash = hash;
} }
for (var i = tx.ins.length-1; i >= 0; i--) { for (var i = this.ins.length-1; i >= 0; i--) {
var txin = tx.ins[i]; var txin = this.ins[i];
firstSendHash = txin.script.simpleInPubKeyHash(); firstSendHash = txin.script.simpleInPubKeyHash();
if (!wallet.hasHash(firstSendHash)) { if (!wallet.hasHash(firstSendHash)) {
allFromMe = false; allFromMe = false;
@ -203,13 +206,45 @@
var impact = this.calcImpact(wallet); var impact = this.calcImpact(wallet);
var analysis = {};
analysis.impact = impact;
if (impact.sign > 0 && impact.value.compareTo(BigInteger.ZERO) > 0) { if (impact.sign > 0 && impact.value.compareTo(BigInteger.ZERO) > 0) {
return "Received with "+(new Bitcoin.Address(firstMeRecvHash)); analysis.type = 'recv';
analysis.addr = new Bitcoin.Address(firstMeRecvHash);
} else if (allFromMe && allToMe) { } else if (allFromMe && allToMe) {
return "Payment to yourself"; analysis.type = 'self';
} else if (allFromMe) { } else if (allFromMe) {
return "Payment to "+(new Bitcoin.Address(firstRecvHash)); analysis.type = 'sent';
analysis.addr = new Bitcoin.Address(firstRecvHash);
} else { } else {
analysis.type = "other";
}
return analysis;
};
Transaction.prototype.getDescription = function (wallet) {
var analysis = this.analyze(wallet);
if (!analysis) return "";
switch (analysis.type) {
case 'recv':
return "Received with "+analysis.addr;
break;
case 'sent':
return "Payment to "+analysis.addr;
break;
case 'self':
return "Payment to yourself";
break;
case 'other':
default:
return ""; return "";
} }
}; };

Loading…
Cancel
Save