This commit is contained in:
Josh Harvey 2016-04-07 12:00:56 +01:00
parent 184d30209a
commit 14497d81c6

View file

@ -3,6 +3,7 @@
// TODO: Consider using serializable transactions for true ACID
var BigNumber = require('bignumber.js')
var pg = require('pg');
var async = require('async');
var _ = require('lodash');
@ -173,27 +174,30 @@ function billsAndTxs(client, session, cb) {
// we need to parse, since we know these won't be huge numbers.
cb(null, {
billsFiat: parseInt(results[0].rows[0].fiat),
billsSatoshis: parseInt(results[0].rows[0].satoshis),
billsSatoshis: new BigNumber(results[0].rows[0].satoshis),
txFiat: parseInt(results[1].rows[0].fiat),
txSatoshis: parseInt(results[1].rows[0].satoshis)
txSatoshis: new BigNumber(results[1].rows[0].satoshis)
});
});
}
function computeSendAmount(tx, totals) {
var fiatRemaining = (tx.fiat || totals.billsFiat) - totals.txFiat;
var satoshisRemaining = (tx.satoshis || totals.billsSatoshis) -
totals.txSatoshis;
var satoshisRemaining = tx.satoshis.eq(0)
? totals.billsSatoshis.minus(totals.txSatoshis)
: tx.satoshis.minus(totals.txSatoshis)
var result = {
fiat: fiatRemaining,
satoshis: satoshisRemaining
};
if (result.fiat < 0 || result.satoshis < 0) {
if (result.fiat < 0 || result.satoshis.lt(0)) {
logger.warn({tx: tx, totals: totals, result: result},
'computeSendAmount result < 0, this shouldn\'t happen. ' +
'Maybe timeout arrived after machineSend.');
result.fiat = 0;
result.satoshis = 0;
result.satoshis = new BigNumber(0);
}
return result;
}
@ -240,7 +244,7 @@ function insertOutgoingTx(client, session, tx, totals, cb) {
var authority = tx.fiat ? 'machine' : 'timeout';
var satoshis = sendAmount.satoshis;
var fiat = sendAmount.fiat;
if (satoshis === 0) return cb(null, {satoshis: 0, fiat: 0});
if (satoshis.eq(0)) return cb(null, {satoshis: new BigNumber(0), fiat: 0});
insertOutgoing(client, session, tx, satoshis, fiat, stage, authority,
function(err) {
@ -264,7 +268,7 @@ function insertOutgoingCompleteTx(client, session, tx, cb) {
function insertIncoming(client, session, tx, satoshis, fiat, stage, authority,
cb) {
var realSatoshis = satoshis || 0;
var realSatoshis = satoshis || new BigNumber(0);
insertTx(client, session, true, tx, realSatoshis, fiat, stage, authority, cb);
}