Merge branch 'bluewallet-lndhub'

# Conflicts:
#	package.json
This commit is contained in:
Agustin Kassis 2020-03-15 00:19:51 -03:00
commit 6074dc6c2c
5 changed files with 47 additions and 31 deletions

View File

@ -243,7 +243,11 @@ export class User {
invoice.description = '';
for (let tag of decoded.tags) {
if (tag.tagName === 'description') {
invoice.description += decodeURIComponent(tag.data);
try {
invoice.description += decodeURIComponent(tag.data);
} catch (_) {
invoice.description += tag.data;
}
}
if (tag.tagName === 'payment_hash') {
invoice.payment_hash = tag.data;
@ -267,7 +271,7 @@ export class User {
}
invoice.amt = decoded.satoshis;
invoice.expire_time = 3600;
invoice.expire_time = 3600 * 24;
// ^^^default; will keep for now. if we want to un-hardcode it - it should be among tags (`expire_time`)
invoice.timestamp = decoded.timestamp;
invoice.type = 'user_invoice';
@ -313,6 +317,10 @@ export class User {
if (invoice.payment_route) {
invoice.fee = +invoice.payment_route.total_fees;
invoice.value = +invoice.payment_route.total_fees + +invoice.payment_route.total_amt;
if (invoice.payment_route.total_amt_msat && invoice.payment_route.total_amt_msat / 1000 !== +invoice.payment_route.total_amt) {
// okay, we have to account for MSAT
invoice.value = +invoice.payment_route.total_fees + Math.max(parseInt(invoice.payment_route.total_amt_msat / 1000), +invoice.payment_route.total_amt) + 1; // extra sat to cover for msats, as external layer (clients) dont have that resolution
}
} else {
invoice.fee = 0;
}

View File

@ -128,10 +128,17 @@ router.post('/payinvoice', async function(req, res) {
// obtaining a lock
let lock = new Lock(redis, 'invoice_paying_for_' + u.getUserId());
if (!(await lock.obtainLock())) {
return errorTryAgainLater(res);
return errorGeneralServerError(res);
}
let userBalance = await u.getCalculatedBalance();
let userBalance;
try {
userBalance = await u.getCalculatedBalance();
} catch (Error) {
logger.log('', [req.id, 'error running getCalculatedBalance():', Error.message]);
lock.releaseLock();
return errorTryAgainLater(res);
}
lightning.decodePayReq({ pay_req: req.body.invoice }, async function(err, info) {
if (err) {
@ -206,7 +213,7 @@ router.post('/payinvoice', async function(req, res) {
return errorPaymentFailed(res);
}
});
if (!info.num_satoshis && !info.num_satoshis) {
if (!info.num_satoshis) {
// tip invoice, but someone forgot to specify amount
await lock.releaseLock();
return errorBadArguments(res);
@ -255,11 +262,16 @@ router.get('/balance', postLimiter, async function(req, res) {
return errorBadAuth(res);
}
if (!(await u.getAddress())) await u.generateAddress(); // onchain address needed further
await u.accountForPosibleTxids();
let balance = await u.getBalance();
if (balance < 0) balance = 0;
res.send({ BTC: { AvailableBalance: balance } });
try {
if (!(await u.getAddress())) await u.generateAddress(); // onchain address needed further
await u.accountForPosibleTxids();
let balance = await u.getBalance();
if (balance < 0) balance = 0;
res.send({ BTC: { AvailableBalance: balance } });
} catch (Error) {
logger.log('', [req.id, 'error getting balance:', Error.message, 'userid:', u.getUserId()]);
return errorGeneralServerError(res);
}
});
router.get('/getinfo', postLimiter, async function(req, res) {
@ -298,7 +310,7 @@ router.get('/gettxs', async function(req, res) {
}
res.send(txs);
} catch (Err) {
logger.log('', [req.id, 'error:', Err]);
logger.log('', [req.id, 'error gettxs:', Err.message, 'userid:', u.getUserId()]);
res.send([]);
}
});
@ -318,7 +330,7 @@ router.get('/getuserinvoices', async function(req, res) {
res.send(invoices);
}
} catch (Err) {
logger.log('', [req.id, 'error:', Err]);
logger.log('', [req.id, 'error getting user invoices:', Err.message, 'userid:', u.getUserId()]);
res.send([]);
}
});
@ -408,7 +420,7 @@ function errorGeneralServerError(res) {
return res.send({
error: true,
code: 6,
message: 'Server fault',
message: 'Something went wrong. Please try again later',
});
}

18
package-lock.json generated
View File

@ -2050,9 +2050,9 @@
}
},
"eslint-plugin-prettier": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz",
"integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==",
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz",
"integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==",
"requires": {
"prettier-linter-helpers": "^1.0.0"
}
@ -3641,9 +3641,9 @@
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
},
"ioredis": {
"version": "4.14.1",
"resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.14.1.tgz",
"integrity": "sha512-94W+X//GHM+1GJvDk6JPc+8qlM7Dul+9K+lg3/aHixPN7ZGkW6qlvX0DG6At9hWtH2v3B32myfZqWoANUJYGJA==",
"version": "4.15.1",
"resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.15.1.tgz",
"integrity": "sha512-vbSsIlmI2P31c+nxZvYjChAcgMK5Ssn9FLdhOXi0O+KVOp6JLXrkVFlq8Zrmc3ee5e5eoqB9nHFYIQzWKc/12Q==",
"requires": {
"cluster-key-slot": "^1.1.0",
"debug": "^4.1.1",
@ -4211,9 +4211,9 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"mustache": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mustache/-/mustache-3.1.0.tgz",
"integrity": "sha512-3Bxq1R5LBZp7fbFPZzFe5WN4s0q3+gxZaZuZVY+QctYJiCiVgXHOTIC0/HgZuOPFt/6BQcx5u0H2CUOxT/RoGQ=="
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/mustache/-/mustache-3.2.1.tgz",
"integrity": "sha512-RERvMFdLpaFfSRIEe632yDm5nsd0SDKn8hGmcUwswnyiE5mtdZLDybtHAz6hjJhawokF0hXvGLtx9mrQfm6FkA=="
},
"mute-stream": {
"version": "0.0.8",

View File

@ -19,18 +19,18 @@
"babel-preset-env": "^1.7.0",
"babel-preset-es2015": "^6.24.1",
"babel-register": "^6.26.0",
"bignumber.js": "^9.0.0",
"bignumber.js": "^8.0.1",
"bolt11": "^1.2.6",
"eslint": "^6.7.1",
"eslint-config-prettier": "^6.7.0",
"eslint-plugin-prettier": "^3.0.0",
"eslint": "^5.9.0",
"eslint-config-prettier": "^3.3.0",
"eslint-plugin-prettier": "^3.1.2",
"express": "^4.16.4",
"express-rate-limit": "^5.0.0",
"grpc": "^1.17.0-pre1",
"ioredis": "^4.2.0",
"jayson": "^3.1.2",
"morgan": "^1.9.1",
"mustache": "^3.0.1",
"mustache": "^3.2.1",
"node-uuid": "^1.4.8",
"prettier": "^1.19.1",
"request": "^2.88.0",

View File

@ -37,10 +37,6 @@ if (!fs.existsSync('logs')) {
fs.mkdirSync('logs');
}
/**
* @param {string} label group label
* @param {string} message log message
*/
function log(label, message) {
logger.log({
level: 'info',