Merge branch 'bluewallet-lndhub'
# Conflicts: # package.json
This commit is contained in:
commit
6074dc6c2c
@ -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;
|
||||
}
|
||||
|
@ -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
18
package-lock.json
generated
@ -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",
|
||||
|
10
package.json
10
package.json
@ -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",
|
||||
|
@ -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',
|
||||
|
Loading…
x
Reference in New Issue
Block a user