Removed params and delete

clnrest-migration
ShahanaFarooqui 7 months ago
parent cee77e61db
commit ebbb1dbd76

@ -94,7 +94,7 @@ export const closeChannel = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/close';
options.body = { channelId: req.params.channelId, unilaterlaltimeout: req.query.force ? 1 : null };
options.body = req.body;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Channels', msg: 'Closing Channel', data: options.url });
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Channel Closed', data: body });
@ -111,7 +111,7 @@ export const listForwards = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/listforwards';
options.body = { status: req.query.status || 'settled' };
options.body = req.body;
request.get(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Channels', msg: 'Forwarding History Received For Status ' + req.query.status, data: body });
res.status(200).json(!body.forwards ? [] : (req.query.status === 'failed' || req.query.status === 'local_failed') ? body.forwards.slice(Math.max(0, body.forwards.length - 1000), Math.max(1000, body.forwards.length)).reverse() : body.forwards.reverse());

@ -20,7 +20,7 @@ export const getInfo = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'GetInfo', msg: 'Selected Node ' + req.session.selectedNode.ln_node });
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'GetInfo', msg: 'Calling Info from Core Lightning server url ' + options.url });
if (!options.headers || !options.headers.rune) {
const errMsg = 'Core lightning get info failed due to blacklisted or missing rune!';
const errMsg = 'Core lightning get info failed due to missing rune!';
const err = common.handleError({ statusCode: 502, message: 'Bad rune', error: errMsg }, 'GetInfo', errMsg, req.session.selectedNode);
return res.status(err.statusCode).json({ message: err.message, error: err.error });
}

@ -11,7 +11,7 @@ export const deleteExpiredInvoice = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/delexpiredinvoice';
options.body = req.query.maxexpiry ? { maxexpiry: req.query.maxexpiry } : null;
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoice', msg: 'Invoices Deleted', data: body });
res.status(204).json({ status: 'Invoice Deleted Successfully' });
@ -26,8 +26,8 @@ export const listInvoices = (req, res, next) => {
if (options.error) {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.body = req.query.label ? { label: req.query.label } : null;
options.url = req.session.selectedNode.ln_server_url + '/v1/listinvoices';
options.body = req.body;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Invoice', msg: 'Invoices List URL', data: options.url });
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Invoice', msg: 'Invoices List Received', data: body });

@ -11,7 +11,7 @@ export const getRoute = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/getroute';
options.body = { id: req.params.destPubkey, amount_msat: req.params.amount, riskfactor: (req.query.riskFactor || 0) };
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Network', msg: 'Network Routes Received', data: body });
res.status(200).json({ routes: body });
@ -27,7 +27,7 @@ export const listChannels = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/listchannels';
options.body = req.params.channelShortId ? { short_channel_id: req.params.channelShortId } : null;
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Network', msg: 'Channel Lookup Finished', data: body });
res.status(200).json(body);
@ -43,9 +43,9 @@ export const feeRates = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/feerates';
options.body = req.params.feeRateStyle ? { style: req.params.feeRateStyle } : null;
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Network', msg: 'Network Fee Rates Received for ' + req.params.feeRateStyle, data: body });
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Network', msg: 'Network Fee Rates Received for ' + req.body.style, data: body });
res.status(200).json(body);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Network', 'Fee Rates Error', req.session.selectedNode);

@ -19,9 +19,9 @@ export const listOfferBookmarks = (req, res, next) => {
};
export const deleteOfferBookmark = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Deleting Offer Bookmark..' });
databaseService.remove(req.session.selectedNode, CollectionsEnum.OFFERS, CollectionFieldsEnum.BOLT12, req.params.offerStr).then((deleteRes) => {
databaseService.remove(req.session.selectedNode, CollectionsEnum.OFFERS, CollectionFieldsEnum.BOLT12, req.body.offer_str).then((deleteRes) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Offer Bookmark Deleted', data: deleteRes });
res.status(204).json(req.params.offerStr);
res.status(204).json(req.body.offer_str);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Offers', 'Offer Bookmark Delete Error', req.session.selectedNode);
return res.status(err.statusCode).json({ message: err.message, error: err.error });
@ -51,16 +51,6 @@ export const createOffer = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/offer';
req.body.issuer = req.body.issuer ? req.body.issuer : req.body.vendor ? req.body.vendor : null;
req.body.label = (req.body.label) ? req.body.label : null;
req.body.quantity_max = (req.body.quantity_max) ? req.body.quantity_max : null;
req.body.absolute_expiry = (req.body.absolute_expiry) ? req.body.absolute_expiry : null;
req.body.recurrence = (req.body.recurrence) ? req.body.recurrence : null;
req.body.recurrence_base = (req.body.recurrence_base) ? req.body.recurrence_base : null;
req.body.recurrence_paywindow = (req.body.recurrence_paywindow) ? req.body.recurrence_paywindow : null;
req.body.recurrence_limit = (req.body.recurrence_limit) ? req.body.recurrence_limit : null;
req.body.single_use = !(req.body.single_use === '0' || req.body.single_use === 'false' || !req.body.single_use);
req.body.quantity_min = (req.body.quantity_min) ? req.body.quantity_min : null;
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Offer Created', data: body });
@ -77,12 +67,6 @@ export const fetchOfferInvoice = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/fetchinvoice';
req.body.msatoshi = (req.body.msatoshi) ? req.body.msatoshi : null;
req.body.quantity = (req.body.quantity) ? req.body.quantity : null;
req.body.recurrence_counter = (req.body.recurrence_counter) ? req.body.recurrence_counter : null;
req.body.recurrence_start = (req.body.recurrence_start) ? req.body.recurrence_start : null;
req.body.recurrence_label = (req.body.recurrence_label) ? req.body.recurrence_label : null;
req.body.timeout = (req.body.timeout) ? req.body.timeout : null;
options.body = req.body;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Offers', msg: 'Offer Invoice Body', data: options.body });
request.post(options).then((body) => {
@ -100,7 +84,7 @@ export const disableOffer = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/disableOffer';
options.body = { offer_id: req.params.offerID };
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Offer Disabled', data: body });
res.status(202).json(body);

@ -27,10 +27,6 @@ export const onChainWithdraw = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/withdraw';
req.body.destination = req.body.address;
req.body.feeRate = (req.body.feeRate) ? req.body.feeRate : null;
req.body.minConf = (req.body.minConf) ? req.body.minConf : null;
req.body.utxos = (req.body.utxos) ? req.body.utxos : null;
options.body = req.body;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'OnChain', msg: 'OnChain Withdraw Options', data: options.body });
request.post(options).then((body) => {

@ -92,13 +92,6 @@ export const postPayment = (req, res, next) => {
if (req.body.paymentType === 'KEYSEND') {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Keysend Payment..' });
options.url = req.session.selectedNode.ln_server_url + '/v1/keysend';
req.body.destination = req.body.pubkey;
req.body.msatoshi = req.body.amount;
req.body.label = (req.body.label) ? req.body.label : null;
req.body.maxfeepercent = (req.body.maxfeepercent) ? req.body.maxfeepercent : null;
req.body.retry_for = (req.body.retry_for) ? req.body.retry_for : null;
req.body.maxdelay = (req.body.maxdelay) ? req.body.maxdelay : null;
req.body.exemptfee = (req.body.exemptfee) ? req.body.exemptfee : null;
options.body = req.body;
}
else {
@ -108,18 +101,6 @@ export const postPayment = (req, res, next) => {
else {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Sending Invoice Payment..' });
}
req.body.bolt11 = (req.body.invoice) ? req.body.invoice : null;
req.body.msatoshi = (req.body.amount) ? req.body.amount : null;
req.body.label = (req.body.label) ? req.body.label : null;
req.body.riskfactor = (req.body.riskfactor) ? req.body.riskfactor : null;
req.body.maxfeepercent = (req.body.maxfeepercent) ? req.body.maxfeepercent : null;
req.body.retry_for = (req.body.retry_for) ? req.body.retry_for : null;
req.body.maxdelay = (req.body.maxdelay) ? req.body.maxdelay : null;
req.body.exemptfee = (req.body.exemptfee) ? req.body.exemptfee : null;
req.body.localinvreqid = (req.body.localinvreqid) ? req.body.localinvreqid : null;
req.body.exclude = (req.body.exclude) ? req.body.exclude : null;
req.body.maxfee = (req.body.maxfee) ? req.body.maxfee : null;
req.body.description = (req.body.description) ? req.body.description : null;
options.body = req.body;
options.url = req.session.selectedNode.ln_server_url + '/v1/pay';
}

@ -57,12 +57,7 @@ export const deletePeer = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/disconnect';
const id = req.params.peerId;
const force = !!req.query.force;
options.body = {
...(id && { id }),
...(force && { force })
};
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Peer Disconnected', data: body });
res.status(204).json({});

@ -42,7 +42,7 @@ export const decodePayment = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/decode';
options.body = { string: req.params.payReq };
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Payment Decoded', data: body });
res.status(200).json(body);

@ -6,7 +6,7 @@ const router = Router();
router.get('/listPeerChannels', isAuthenticated, listPeerChannels);
router.post('/', isAuthenticated, openChannel);
router.post('/setChannelFee', isAuthenticated, setChannelFee);
router.delete('/:channelId', isAuthenticated, closeChannel);
router.get('/listForwards', isAuthenticated, listForwards);
router.post('/close/', isAuthenticated, closeChannel);
router.post('/listForwards', isAuthenticated, listForwards);
router.post('/funderUpdate', isAuthenticated, funderUpdatePolicy);
export default router;

@ -3,7 +3,7 @@ const { Router } = exprs;
import { isAuthenticated } from '../../utils/authCheck.js';
import { listInvoices, addInvoice, deleteExpiredInvoice } from '../../controllers/cln/invoices.js';
const router = Router();
router.get('/', isAuthenticated, listInvoices);
router.post('/lookup/', isAuthenticated, listInvoices);
router.post('/', isAuthenticated, addInvoice);
router.delete('/', isAuthenticated, deleteExpiredInvoice);
router.post('/delete/', isAuthenticated, deleteExpiredInvoice);
export default router;

@ -3,8 +3,8 @@ const { Router } = exprs;
import { isAuthenticated } from '../../utils/authCheck.js';
import { getRoute, listChannels, feeRates, listNodes } from '../../controllers/cln/network.js';
const router = Router();
router.get('/getRoute/:destPubkey/:amount', isAuthenticated, getRoute);
router.get('/listChannels/:channelShortId', isAuthenticated, listChannels);
router.get('/feeRates/:feeRateStyle', isAuthenticated, feeRates);
router.get('/listNodes', isAuthenticated, listNodes);
router.post('/getRoute', isAuthenticated, getRoute);
router.post('/feeRates', isAuthenticated, feeRates);
router.post('/listChannels', isAuthenticated, listChannels);
export default router;

@ -4,9 +4,9 @@ import { isAuthenticated } from '../../utils/authCheck.js';
import { listOfferBookmarks, deleteOfferBookmark, listOffers, disableOffer, createOffer, fetchOfferInvoice } from '../../controllers/cln/offers.js';
const router = Router();
router.get('/offerbookmarks', isAuthenticated, listOfferBookmarks);
router.delete('/offerbookmark/:offerStr', isAuthenticated, deleteOfferBookmark);
router.post('/offerbookmark/delete', isAuthenticated, deleteOfferBookmark);
router.get('/', isAuthenticated, listOffers);
router.post('/', isAuthenticated, createOffer);
router.post('/fetchOfferInvoice', isAuthenticated, fetchOfferInvoice);
router.delete('/:offerID', isAuthenticated, disableOffer);
router.post('/disableOffer', isAuthenticated, disableOffer);
export default router;

@ -5,5 +5,5 @@ import { getPeers, postPeer, deletePeer } from '../../controllers/cln/peers.js';
const router = Router();
router.get('/', isAuthenticated, getPeers);
router.post('/', isAuthenticated, postPeer);
router.delete('/:peerId', isAuthenticated, deletePeer);
router.post('/disconnect/', isAuthenticated, deletePeer);
export default router;

@ -4,7 +4,7 @@ import { isAuthenticated } from '../../utils/authCheck.js';
import { decodePayments, decodePayment, signMessage, verifyMessage, listConfigs } from '../../controllers/cln/utility.js';
const router = Router();
router.get('/', isAuthenticated, decodePayments);
router.get('/decode/:payReq', isAuthenticated, decodePayment);
router.post('/decode', isAuthenticated, decodePayment);
router.post('/sign', isAuthenticated, signMessage);
router.post('/verify', isAuthenticated, verifyMessage);
router.get('/listConfigs', isAuthenticated, listConfigs);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
(()=>{"use strict";var e,v={},m={};function r(e){var f=m[e];if(void 0!==f)return f.exports;var t=m[e]={id:e,loaded:!1,exports:{}};return v[e].call(t.exports,t,t.exports,r),t.loaded=!0,t.exports}r.m=v,e=[],r.O=(f,t,i,o)=>{if(!t){var a=1/0;for(n=0;n<e.length;n++){for(var[t,i,o]=e[n],s=!0,l=0;l<t.length;l++)(!1&o||a>=o)&&Object.keys(r.O).every(b=>r.O[b](t[l]))?t.splice(l--,1):(s=!1,o<a&&(a=o));if(s){e.splice(n--,1);var d=i();void 0!==d&&(f=d)}}return f}o=o||0;for(var n=e.length;n>0&&e[n-1][2]>o;n--)e[n]=e[n-1];e[n]=[t,i,o]},r.d=(e,f)=>{for(var t in f)r.o(f,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:f[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((f,t)=>(r.f[t](e,f),f),[])),r.u=e=>e+"."+{125:"dbd1b465c25f616b",456:"16212571f65d0b5f",570:"a719a189ca60c55b",758:"2801e2da6f8bba94"}[e]+".js",r.miniCssF=e=>{},r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),(()=>{var e={},f="RTLApp:";r.l=(t,i,o,n)=>{if(e[t])e[t].push(i);else{var a,s;if(void 0!==o)for(var l=document.getElementsByTagName("script"),d=0;d<l.length;d++){var u=l[d];if(u.getAttribute("src")==t||u.getAttribute("data-webpack")==f+o){a=u;break}}a||(s=!0,(a=document.createElement("script")).type="module",a.charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",f+o),a.src=r.tu(t)),e[t]=[i];var c=(g,b)=>{a.onerror=a.onload=null,clearTimeout(p);var h=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),h&&h.forEach(y=>y(b)),g)return g(b)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=c.bind(null,a.onerror),a.onload=c.bind(null,a.onload),s&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:f=>f},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={666:0};r.f.j=(i,o)=>{var n=r.o(e,i)?e[i]:void 0;if(0!==n)if(n)o.push(n[2]);else if(666!=i){var a=new Promise((u,c)=>n=e[i]=[u,c]);o.push(n[2]=a);var s=r.p+r.u(i),l=new Error;r.l(s,u=>{if(r.o(e,i)&&(0!==(n=e[i])&&(e[i]=void 0),n)){var c=u&&("load"===u.type?"missing":u.type),p=u&&u.target&&u.target.src;l.message="Loading chunk "+i+" failed.\n("+c+": "+p+")",l.name="ChunkLoadError",l.type=c,l.request=p,n[1](l)}},"chunk-"+i,i)}else e[i]=0},r.O.j=i=>0===e[i];var f=(i,o)=>{var l,d,[n,a,s]=o,u=0;if(n.some(p=>0!==e[p])){for(l in a)r.o(a,l)&&(r.m[l]=a[l]);if(s)var c=s(r)}for(i&&i(o);u<n.length;u++)r.o(e,d=n[u])&&e[d]&&e[d][0](),e[d]=0;return r.O(c)},t=self.webpackChunkRTLApp=self.webpackChunkRTLApp||[];t.forEach(f.bind(null,0)),t.push=f.bind(null,t.push.bind(t))})()})();
(()=>{"use strict";var e,v={},m={};function r(e){var f=m[e];if(void 0!==f)return f.exports;var t=m[e]={id:e,loaded:!1,exports:{}};return v[e].call(t.exports,t,t.exports,r),t.loaded=!0,t.exports}r.m=v,e=[],r.O=(f,t,i,o)=>{if(!t){var a=1/0;for(n=0;n<e.length;n++){for(var[t,i,o]=e[n],s=!0,l=0;l<t.length;l++)(!1&o||a>=o)&&Object.keys(r.O).every(b=>r.O[b](t[l]))?t.splice(l--,1):(s=!1,o<a&&(a=o));if(s){e.splice(n--,1);var d=i();void 0!==d&&(f=d)}}return f}o=o||0;for(var n=e.length;n>0&&e[n-1][2]>o;n--)e[n]=e[n-1];e[n]=[t,i,o]},r.d=(e,f)=>{for(var t in f)r.o(f,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:f[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((f,t)=>(r.f[t](e,f),f),[])),r.u=e=>e+"."+{125:"0f4fc2a7a33f89ec",456:"16212571f65d0b5f",570:"a719a189ca60c55b",758:"2801e2da6f8bba94"}[e]+".js",r.miniCssF=e=>{},r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),(()=>{var e={},f="RTLApp:";r.l=(t,i,o,n)=>{if(e[t])e[t].push(i);else{var a,s;if(void 0!==o)for(var l=document.getElementsByTagName("script"),d=0;d<l.length;d++){var u=l[d];if(u.getAttribute("src")==t||u.getAttribute("data-webpack")==f+o){a=u;break}}a||(s=!0,(a=document.createElement("script")).type="module",a.charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",f+o),a.src=r.tu(t)),e[t]=[i];var c=(g,b)=>{a.onerror=a.onload=null,clearTimeout(p);var h=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),h&&h.forEach(y=>y(b)),g)return g(b)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=c.bind(null,a.onerror),a.onload=c.bind(null,a.onload),s&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:f=>f},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={666:0};r.f.j=(i,o)=>{var n=r.o(e,i)?e[i]:void 0;if(0!==n)if(n)o.push(n[2]);else if(666!=i){var a=new Promise((u,c)=>n=e[i]=[u,c]);o.push(n[2]=a);var s=r.p+r.u(i),l=new Error;r.l(s,u=>{if(r.o(e,i)&&(0!==(n=e[i])&&(e[i]=void 0),n)){var c=u&&("load"===u.type?"missing":u.type),p=u&&u.target&&u.target.src;l.message="Loading chunk "+i+" failed.\n("+c+": "+p+")",l.name="ChunkLoadError",l.type=c,l.request=p,n[1](l)}},"chunk-"+i,i)}else e[i]=0},r.O.j=i=>0===e[i];var f=(i,o)=>{var l,d,[n,a,s]=o,u=0;if(n.some(p=>0!==e[p])){for(l in a)r.o(a,l)&&(r.m[l]=a[l]);if(s)var c=s(r)}for(i&&i(o);u<n.length;u++)r.o(e,d=n[u])&&e[d]&&e[d][0](),e[d]=0;return r.O(c)},t=self.webpackChunkRTLApp=self.webpackChunkRTLApp||[];t.forEach(f.bind(null,0)),t.push=f.bind(null,t.push.bind(t))})()})();

@ -91,7 +91,7 @@ export const closeChannel = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/close';
options.body = { channelId: req.params.channelId, unilaterlaltimeout: req.query.force ? 1 : null };
options.body = req.body;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Channels', msg: 'Closing Channel', data: options.url });
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Channel Closed', data: body });
@ -107,7 +107,7 @@ export const listForwards = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/listforwards';
options.body = { status: req.query.status || 'settled' };
options.body = req.body;
request.get(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Channels', msg: 'Forwarding History Received For Status ' + req.query.status, data: body });
res.status(200).json(!body.forwards ? [] : (req.query.status === 'failed' || req.query.status === 'local_failed') ? body.forwards.slice(Math.max(0, body.forwards.length - 1000), Math.max(1000, body.forwards.length)).reverse() : body.forwards.reverse());

@ -20,7 +20,7 @@ export const getInfo = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'GetInfo', msg: 'Selected Node ' + req.session.selectedNode.ln_node });
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'GetInfo', msg: 'Calling Info from Core Lightning server url ' + options.url });
if (!options.headers || !options.headers.rune) {
const errMsg = 'Core lightning get info failed due to blacklisted or missing rune!';
const errMsg = 'Core lightning get info failed due to missing rune!';
const err = common.handleError({ statusCode: 502, message: 'Bad rune', error: errMsg }, 'GetInfo', errMsg, req.session.selectedNode);
return res.status(err.statusCode).json({ message: err.message, error: err.error });
} else {

@ -10,7 +10,7 @@ export const deleteExpiredInvoice = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/delexpiredinvoice';
options.body = req.query.maxexpiry ? { maxexpiry: req.query.maxexpiry } : null;
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoice', msg: 'Invoices Deleted', data: body });
res.status(204).json({ status: 'Invoice Deleted Successfully' });
@ -24,8 +24,8 @@ export const listInvoices = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoices', msg: 'Getting Invoices..' });
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.body = req.query.label ? { label: req.query.label } : null;
options.url = req.session.selectedNode.ln_server_url + '/v1/listinvoices';
options.body = req.body;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Invoice', msg: 'Invoices List URL', data: options.url });
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Invoice', msg: 'Invoices List Received', data: body });

@ -12,7 +12,7 @@ export const getRoute = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/getroute';
options.body = { id: req.params.destPubkey, amount_msat: req.params.amount, riskfactor: (req.query.riskFactor || 0) };
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Network', msg: 'Network Routes Received', data: body });
res.status(200).json({ routes: body });
@ -27,7 +27,7 @@ export const listChannels = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/listchannels';
options.body = req.params.channelShortId ? { short_channel_id: req.params.channelShortId } : null;
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Network', msg: 'Channel Lookup Finished', data: body });
res.status(200).json(body);
@ -42,9 +42,9 @@ export const feeRates = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/feerates';
options.body = req.params.feeRateStyle ? { style : req.params.feeRateStyle } : null;
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Network', msg: 'Network Fee Rates Received for ' + req.params.feeRateStyle, data: body });
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Network', msg: 'Network Fee Rates Received for ' + req.body.style, data: body });
res.status(200).json(body);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Network', 'Fee Rates Error', req.session.selectedNode);

@ -22,9 +22,9 @@ export const listOfferBookmarks = (req, res, next) => {
export const deleteOfferBookmark = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Deleting Offer Bookmark..' });
databaseService.remove(req.session.selectedNode, CollectionsEnum.OFFERS, CollectionFieldsEnum.BOLT12, req.params.offerStr).then((deleteRes) => {
databaseService.remove(req.session.selectedNode, CollectionsEnum.OFFERS, CollectionFieldsEnum.BOLT12, req.body.offer_str).then((deleteRes) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Offer Bookmark Deleted', data: deleteRes });
res.status(204).json(req.params.offerStr);
res.status(204).json(req.body.offer_str);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Offers', 'Offer Bookmark Delete Error', req.session.selectedNode);
return res.status(err.statusCode).json({ message: err.message, error: err.error });
@ -52,16 +52,6 @@ export const createOffer = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/offer';
req.body.issuer = req.body.issuer ? req.body.issuer : req.body.vendor ? req.body.vendor : null;
req.body.label = (req.body.label) ? req.body.label : null;
req.body.quantity_max = (req.body.quantity_max) ? req.body.quantity_max : null;
req.body.absolute_expiry = (req.body.absolute_expiry) ? req.body.absolute_expiry : null;
req.body.recurrence = (req.body.recurrence) ? req.body.recurrence : null;
req.body.recurrence_base = (req.body.recurrence_base) ? req.body.recurrence_base : null;
req.body.recurrence_paywindow = (req.body.recurrence_paywindow) ? req.body.recurrence_paywindow : null;
req.body.recurrence_limit = (req.body.recurrence_limit) ? req.body.recurrence_limit : null;
req.body.single_use = !(req.body.single_use === '0' || req.body.single_use === 'false' || !req.body.single_use);
req.body.quantity_min = (req.body.quantity_min) ? req.body.quantity_min : null;
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Offer Created', data: body });
@ -77,12 +67,6 @@ export const fetchOfferInvoice = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/fetchinvoice';
req.body.msatoshi = (req.body.msatoshi) ? req.body.msatoshi : null;
req.body.quantity = (req.body.quantity) ? req.body.quantity : null;
req.body.recurrence_counter = (req.body.recurrence_counter) ? req.body.recurrence_counter : null;
req.body.recurrence_start = (req.body.recurrence_start) ? req.body.recurrence_start : null;
req.body.recurrence_label = (req.body.recurrence_label) ? req.body.recurrence_label : null;
req.body.timeout = (req.body.timeout) ? req.body.timeout : null;
options.body = req.body;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Offers', msg: 'Offer Invoice Body', data: options.body });
request.post(options).then((body) => {
@ -99,7 +83,7 @@ export const disableOffer = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/disableOffer';
options.body = { offer_id: req.params.offerID };
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Offer Disabled', data: body });
res.status(202).json(body);

@ -25,10 +25,6 @@ export const onChainWithdraw = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/withdraw';
req.body.destination = req.body.address;
req.body.feeRate = (req.body.feeRate) ? req.body.feeRate : null;
req.body.minConf = (req.body.minConf) ? req.body.minConf : null;
req.body.utxos = (req.body.utxos) ? req.body.utxos : null;
options.body = req.body;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'OnChain', msg: 'OnChain Withdraw Options', data: options.body });
request.post(options).then((body) => {

@ -82,13 +82,6 @@ export const postPayment = (req, res, next) => {
if (req.body.paymentType === 'KEYSEND') {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Keysend Payment..' });
options.url = req.session.selectedNode.ln_server_url + '/v1/keysend';
req.body.destination = req.body.pubkey;
req.body.msatoshi = req.body.amount;
req.body.label = (req.body.label) ? req.body.label : null;
req.body.maxfeepercent = (req.body.maxfeepercent) ? req.body.maxfeepercent : null;
req.body.retry_for = (req.body.retry_for) ? req.body.retry_for : null;
req.body.maxdelay = (req.body.maxdelay) ? req.body.maxdelay : null;
req.body.exemptfee = (req.body.exemptfee) ? req.body.exemptfee : null;
options.body = req.body;
} else {
if (req.body.paymentType === 'OFFER') {
@ -96,18 +89,6 @@ export const postPayment = (req, res, next) => {
} else {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Sending Invoice Payment..' });
}
req.body.bolt11 = (req.body.invoice) ? req.body.invoice : null;
req.body.msatoshi = (req.body.amount) ? req.body.amount : null;
req.body.label = (req.body.label) ? req.body.label : null;
req.body.riskfactor = (req.body.riskfactor) ? req.body.riskfactor : null;
req.body.maxfeepercent = (req.body.maxfeepercent) ? req.body.maxfeepercent : null;
req.body.retry_for = (req.body.retry_for) ? req.body.retry_for : null;
req.body.maxdelay = (req.body.maxdelay) ? req.body.maxdelay : null;
req.body.exemptfee = (req.body.exemptfee) ? req.body.exemptfee : null;
req.body.localinvreqid = (req.body.localinvreqid) ? req.body.localinvreqid : null;
req.body.exclude = (req.body.exclude) ? req.body.exclude : null;
req.body.maxfee = (req.body.maxfee) ? req.body.maxfee : null;
req.body.description = (req.body.description) ? req.body.description : null;
options.body = req.body;
options.url = req.session.selectedNode.ln_server_url + '/v1/pay';
}

@ -55,12 +55,7 @@ export const deletePeer = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/disconnect';
const id = req.params.peerId;
const force = !!req.query.force;
options.body = {
...(id && { id }),
...(force && { force })
};
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Peer Disconnected', data: body });
res.status(204).json({});

@ -42,7 +42,7 @@ export const decodePayment = (req, res, next) => {
options = common.getOptions(req);
if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); }
options.url = req.session.selectedNode.ln_server_url + '/v1/decode';
options.body = { string: req.params.payReq };
options.body = req.body;
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Payment Decoded', data: body });
res.status(200).json(body);

@ -8,9 +8,9 @@ const router = Router();
router.get('/listPeerChannels', isAuthenticated, listPeerChannels);
router.post('/', isAuthenticated, openChannel);
router.post('/setChannelFee', isAuthenticated, setChannelFee);
router.delete('/:channelId', isAuthenticated, closeChannel);
router.post('/close/', isAuthenticated, closeChannel);
router.get('/listForwards', isAuthenticated, listForwards);
router.post('/listForwards', isAuthenticated, listForwards);
router.post('/funderUpdate', isAuthenticated, funderUpdatePolicy);

@ -5,8 +5,8 @@ import { listInvoices, addInvoice, deleteExpiredInvoice } from '../../controller
const router = Router();
router.get('/', isAuthenticated, listInvoices);
router.post('/lookup/', isAuthenticated, listInvoices);
router.post('/', isAuthenticated, addInvoice);
router.delete('/', isAuthenticated, deleteExpiredInvoice);
router.post('/delete/', isAuthenticated, deleteExpiredInvoice);
export default router;

@ -5,9 +5,9 @@ import { getRoute, listChannels, feeRates, listNodes } from '../../controllers/c
const router = Router();
router.get('/getRoute/:destPubkey/:amount', isAuthenticated, getRoute);
router.get('/listChannels/:channelShortId', isAuthenticated, listChannels);
router.get('/feeRates/:feeRateStyle', isAuthenticated, feeRates);
router.get('/listNodes', isAuthenticated, listNodes);
router.post('/getRoute', isAuthenticated, getRoute);
router.post('/feeRates', isAuthenticated, feeRates);
router.post('/listChannels', isAuthenticated, listChannels);
export default router;

@ -6,11 +6,11 @@ import { listOfferBookmarks, deleteOfferBookmark, listOffers, disableOffer, crea
const router = Router();
router.get('/offerbookmarks', isAuthenticated, listOfferBookmarks);
router.delete('/offerbookmark/:offerStr', isAuthenticated, deleteOfferBookmark);
router.post('/offerbookmark/delete', isAuthenticated, deleteOfferBookmark);
router.get('/', isAuthenticated, listOffers);
router.post('/', isAuthenticated, createOffer);
router.post('/fetchOfferInvoice', isAuthenticated, fetchOfferInvoice);
router.delete('/:offerID', isAuthenticated, disableOffer);
router.post('/disableOffer', isAuthenticated, disableOffer);
export default router;

@ -7,6 +7,6 @@ const router = Router();
router.get('/', isAuthenticated, getPeers);
router.post('/', isAuthenticated, postPeer);
router.delete('/:peerId', isAuthenticated, deletePeer);
router.post('/disconnect/', isAuthenticated, deletePeer);
export default router;

@ -6,7 +6,7 @@ import { decodePayments, decodePayment, signMessage, verifyMessage, listConfigs
const router = Router();
router.get('/', isAuthenticated, decodePayments);
router.get('/decode/:payReq', isAuthenticated, decodePayment);
router.post('/decode', isAuthenticated, decodePayment);
router.post('/sign', isAuthenticated, signMessage);
router.post('/verify', isAuthenticated, verifyMessage);
router.get('/listConfigs', isAuthenticated, listConfigs);

@ -57,9 +57,9 @@ export class CLNBumpFeeComponent implements OnInit, OnDestroy {
subscribe((action: any) => {
this.store.dispatch(setChannelTransaction({
payload: {
address: action.payload,
satoshis: 'all',
feeRate: (+(this.fees || 0) * 1000).toString(),
destination: action.payload,
satoshi: 'all',
feerate: (+(this.fees || 0) * 1000).toString(),
utxos: [this.bumpFeeChannel.funding_txid + ':' + (this.outputIndex || '').toString()]
}
}));

@ -126,7 +126,7 @@ export class CLNEffects implements OnDestroy {
ofType(CLNActions.FETCH_FEE_RATES_CLN),
mergeMap((action: { type: string, payload: string }) => {
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'FetchFeeRates' + action.payload, status: APICallStatusEnum.INITIATED } }));
return this.httpClient.get<FeeRates>(this.CHILD_API_URL + API_END_POINTS.NETWORK_API + '/feeRates/' + action.payload).
return this.httpClient.post<FeeRates>(this.CHILD_API_URL + API_END_POINTS.NETWORK_API + '/feeRates', { style: action.payload }).
pipe(
map((feeRates) => {
this.logger.info(feeRates);
@ -144,46 +144,6 @@ export class CLNEffects implements OnDestroy {
})
));
// fetchBalanceCL = createEffect(() => this.actions.pipe(
// ofType(CLNActions.FETCH_BALANCE_CLN),
// mergeMap(() => {
// this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'FetchBalance', status: APICallStatusEnum.INITIATED } }));
// return this.httpClient.get<Balance>(this.CHILD_API_URL + API_END_POINTS.BALANCE_API);
// }),
// map((balance) => {
// this.logger.info(balance);
// this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'FetchBalance', status: APICallStatusEnum.COMPLETED } }));
// return {
// type: CLNActions.SET_BALANCE_CLN,
// payload: balance ? balance : {}
// };
// }),
// catchError((err: any) => {
// this.handleErrorWithoutAlert('FetchBalance', UI_MESSAGES.NO_SPINNER, 'Fetching Balances Failed.', err);
// return of({ type: RTLActions.VOID });
// })
// ));
// fetchLocalRemoteBalanceCL = createEffect(() => this.actions.pipe(
// ofType(CLNActions.FETCH_LOCAL_REMOTE_BALANCE_CLN),
// mergeMap(() => {
// this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'FetchLocalRemoteBalance', status: APICallStatusEnum.INITIATED } }));
// return this.httpClient.get<LocalRemoteBalance>(this.CHILD_API_URL + API_END_POINTS.CHANNELS_API + '/localRemoteBalance');
// }),
// map((lrBalance) => {
// this.logger.info(lrBalance);
// this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'FetchLocalRemoteBalance', status: APICallStatusEnum.COMPLETED } }));
// return {
// type: CLNActions.SET_LOCAL_REMOTE_BALANCE_CLN,
// payload: lrBalance ? lrBalance : {}
// };
// }),
// catchError((err: any) => {
// this.handleErrorWithoutAlert('FetchLocalRemoteBalance', UI_MESSAGES.NO_SPINNER, 'Fetching Balances Failed.', err);
// return of({ type: RTLActions.VOID });
// })
// ));
getNewAddressCL = createEffect(() => this.actions.pipe(
ofType(CLNActions.GET_NEW_ADDRESS_CLN),
mergeMap((action: { type: string, payload: GetNewAddress }) => {
@ -244,7 +204,7 @@ export class CLNEffects implements OnDestroy {
mergeMap((action: { type: string, payload: { id: string } }) => {
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.CONNECT_PEER }));
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'SaveNewPeer', status: APICallStatusEnum.INITIATED } }));
return this.httpClient.post<Peer[]>(this.CHILD_API_URL + API_END_POINTS.PEERS_API, { id: action.payload.id }).
return this.httpClient.post<Peer[]>(this.CHILD_API_URL + API_END_POINTS.PEERS_API, action.payload.id).
pipe(
map((postRes: Peer[]) => {
this.logger.info(postRes);
@ -268,7 +228,7 @@ export class CLNEffects implements OnDestroy {
ofType(CLNActions.DETACH_PEER_CLN),
mergeMap((action: { type: string, payload: DetachPeer }) => {
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.DISCONNECT_PEER }));
return this.httpClient.delete(this.CHILD_API_URL + API_END_POINTS.PEERS_API + '/' + action.payload.id + '?force=' + action.payload.force).
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.PEERS_API + '/disconnect', { id: action.payload.id, force: action.payload.force }).
pipe(
map((postRes: any) => {
this.logger.info(postRes);
@ -338,7 +298,6 @@ export class CLNEffects implements OnDestroy {
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'SaveNewChannel', status: APICallStatusEnum.COMPLETED } }));
this.store.dispatch(closeSpinner({ payload: UI_MESSAGES.OPEN_CHANNEL }));
this.store.dispatch(openSnackBar({ payload: 'Channel Added Successfully!' }));
// this.store.dispatch(fetchBalance());
this.store.dispatch(fetchUTXOBalances());
return {
type: CLNActions.FETCH_CHANNELS_CLN
@ -382,14 +341,12 @@ export class CLNEffects implements OnDestroy {
ofType(CLNActions.CLOSE_CHANNEL_CLN),
mergeMap((action: { type: string, payload: CloseChannel }) => {
this.store.dispatch(openSpinner({ payload: (action.payload.force ? UI_MESSAGES.FORCE_CLOSE_CHANNEL : UI_MESSAGES.CLOSE_CHANNEL) }));
const queryParam = action.payload.force ? '?force=' + action.payload.force : '';
return this.httpClient.delete(this.CHILD_API_URL + API_END_POINTS.CHANNELS_API + '/' + action.payload.channelId + queryParam).
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.CHANNELS_API + '/close', { id: action.payload.channelId, unilaterlaltimeout: action.payload.force ? 1 : null }).
pipe(
map((postRes: any) => {
this.logger.info(postRes);
this.store.dispatch(closeSpinner({ payload: action.payload.force ? UI_MESSAGES.FORCE_CLOSE_CHANNEL : UI_MESSAGES.CLOSE_CHANNEL }));
this.store.dispatch(fetchChannels());
// this.store.dispatch(fetchLocalRemoteBalances());
this.store.dispatch(fetchUTXOBalances());
this.store.dispatch(openSnackBar({ payload: 'Channel Closed Successfully!' }));
return {
@ -480,7 +437,6 @@ export class CLNEffects implements OnDestroy {
}
setTimeout(() => {
this.store.dispatch(fetchChannels());
// this.store.dispatch(fetchBalance());
this.store.dispatch(fetchUTXOBalances());
this.store.dispatch(fetchPayments());
this.store.dispatch(closeSpinner({ payload: action.payload.uiMessage }));
@ -506,7 +462,7 @@ export class CLNEffects implements OnDestroy {
ofType(CLNActions.GET_QUERY_ROUTES_CLN),
mergeMap((action: { type: string, payload: GetQueryRoutes }) => {
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'GetQueryRoutes', status: APICallStatusEnum.INITIATED } }));
return this.httpClient.get(this.CHILD_API_URL + API_END_POINTS.NETWORK_API + '/getRoute/' + action.payload.destPubkey + '/' + action.payload.amount).
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.NETWORK_API + '/getRoute/', { id: action.payload.destPubkey, amount_msat: action.payload.amount, riskfactor: 0 }).
pipe(
map((qrRes: any) => {
this.logger.info(qrRes);
@ -562,7 +518,7 @@ export class CLNEffects implements OnDestroy {
mergeMap((action: { type: string, payload: ChannelLookup }) => {
this.store.dispatch(openSpinner({ payload: action.payload.uiMessage }));
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'Lookup', status: APICallStatusEnum.INITIATED } }));
return this.httpClient.get(this.CHILD_API_URL + API_END_POINTS.NETWORK_API + '/listChannels/' + action.payload.shortChannelID).
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.NETWORK_API + '/listChannels', { short_channel_id: action.payload.shortChannelID }).
pipe(
map((resChannel) => {
this.logger.info(resChannel);
@ -591,7 +547,7 @@ export class CLNEffects implements OnDestroy {
mergeMap((action: { type: string, payload: string }) => {
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.SEARCHING_INVOICE }));
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'Lookup', status: APICallStatusEnum.INITIATED } }));
return this.httpClient.get(this.CHILD_API_URL + API_END_POINTS.INVOICES_API + '?label=' + action.payload).
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.INVOICES_API + '/lookup', { label: action.payload }).
pipe(
map((resInvoice: any) => {
this.logger.info(resInvoice);
@ -656,8 +612,7 @@ export class CLNEffects implements OnDestroy {
ofType(CLNActions.DELETE_EXPIRED_INVOICE_CLN),
mergeMap((action: { type: string, payload: number }) => {
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.DELETE_INVOICE }));
const queryStr = (action.payload) ? '?maxexpiry=' + action.payload : '';
return this.httpClient.delete(this.CHILD_API_URL + API_END_POINTS.INVOICES_API + queryStr).
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.INVOICES_API + '/delete', { maxexpiry: action.payload }).
pipe(
map((postRes: any) => {
this.logger.info(postRes);
@ -721,9 +676,7 @@ export class CLNEffects implements OnDestroy {
mergeMap((action: { type: string, payload: { amount: string, description: string, issuer: string } }) => {
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.CREATE_OFFER }));
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'SaveNewOffer', status: APICallStatusEnum.INITIATED } }));
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.OFFERS_API, {
amount: action.payload.amount, description: action.payload.description, issuer: action.payload.issuer
}).pipe(map((postRes: Offer) => {
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.OFFERS_API, action.payload).pipe(map((postRes: Offer) => {
this.logger.info(postRes);
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'SaveNewOffer', status: APICallStatusEnum.COMPLETED } }));
this.store.dispatch(closeSpinner({ payload: UI_MESSAGES.CREATE_OFFER }));
@ -757,7 +710,7 @@ export class CLNEffects implements OnDestroy {
const num_max_invoices = (action.payload.num_max_invoices) ? action.payload.num_max_invoices : 1000000;
const index_offset = (action.payload.index_offset) ? action.payload.index_offset : 0;
const reversed = (action.payload.reversed) ? action.payload.reversed : true;
return this.httpClient.get<ListInvoices>(this.CHILD_API_URL + API_END_POINTS.INVOICES_API + '?num_max_invoices=' + num_max_invoices + '&index_offset=' + index_offset + '&reversed=' + reversed).
return this.httpClient.post<ListInvoices>(this.CHILD_API_URL + API_END_POINTS.INVOICES_API + '/lookup', { num_max_invoices: num_max_invoices, index_offset: index_offset, reversed: reversed }).
pipe(
map((res: ListInvoices) => {
this.logger.info(res);
@ -799,7 +752,7 @@ export class CLNEffects implements OnDestroy {
mergeMap((action: { type: string, payload: { offer_id: string } }) => {
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.DISABLE_OFFER }));
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'DisableOffer', status: APICallStatusEnum.INITIATED } }));
return this.httpClient.delete(this.CHILD_API_URL + API_END_POINTS.OFFERS_API + '/' + action.payload.offer_id).
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.OFFERS_API + '/disableOffer', { offer_id: action.payload.offer_id }).
pipe(map((postRes: any) => {
this.logger.info(postRes);
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'DisableOffer', status: APICallStatusEnum.COMPLETED } }));
@ -840,7 +793,7 @@ export class CLNEffects implements OnDestroy {
mergeMap((action: { type: string, payload: { bolt12: string } }) => {
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.DELETE_OFFER_BOOKMARK }));
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'DeleteOfferBookmark', status: APICallStatusEnum.INITIATED } }));
return this.httpClient.delete(this.CHILD_API_URL + API_END_POINTS.OFFERS_API + '/offerbookmark/' + action.payload.bolt12).
return this.httpClient.post(this.CHILD_API_URL + API_END_POINTS.OFFERS_API + '/offerbookmark/delete', { offer_str: action.payload.bolt12 }).
pipe(map((postRes: any) => {
this.logger.info(postRes);
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'DeleteOfferBookmark', status: APICallStatusEnum.COMPLETED } }));
@ -868,7 +821,6 @@ export class CLNEffects implements OnDestroy {
this.logger.info(postRes);
this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'SetChannelTransaction', status: APICallStatusEnum.COMPLETED } }));
this.store.dispatch(closeSpinner({ payload: UI_MESSAGES.SEND_FUNDS }));
// this.store.dispatch(fetchBalance());
this.store.dispatch(fetchUTXOBalances());
return {
type: CLNActions.SET_CHANNEL_TRANSACTION_RES_CLN,
@ -976,12 +928,9 @@ export class CLNEffects implements OnDestroy {
this.store.dispatch(fetchInvoices({ payload: { num_max_invoices: 1000000, index_offset: 0, reversed: true } }));
this.store.dispatch(fetchChannels());
this.store.dispatch(fetchUTXOBalances());
// this.store.dispatch(fetchBalance());
// this.store.dispatch(fetchLocalRemoteBalance());
this.store.dispatch(fetchFeeRates({ payload: 'perkw' }));
this.store.dispatch(fetchFeeRates({ payload: 'perkb' }));
this.store.dispatch(fetchPeers());
// this.store.dispatch(fetchUTXOs());
this.store.dispatch(fetchPayments());
}

@ -191,7 +191,7 @@ export class CLNLightningPaymentsComponent implements OnInit, AfterViewInit, OnD
subscribe((confirmRes) => {
if (confirmRes) {
this.paymentDecoded.amount_msat = confirmRes[0].inputValue;
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_PAYMENT, paymentType: PaymentTypes.INVOICE, invoice: this.paymentRequest, amount: confirmRes[0].inputValue * 1000, fromDialog: false } }));
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_PAYMENT, paymentType: PaymentTypes.INVOICE, bolt11: this.paymentRequest, amount_msat: confirmRes[0].inputValue * 1000, fromDialog: false } }));
this.resetData();
}
});
@ -220,7 +220,7 @@ export class CLNLightningPaymentsComponent implements OnInit, AfterViewInit, OnD
pipe(take(1)).
subscribe((confirmRes) => {
if (confirmRes) {
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_PAYMENT, paymentType: PaymentTypes.INVOICE, invoice: this.paymentRequest, fromDialog: false } }));
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_PAYMENT, paymentType: PaymentTypes.INVOICE, bolt11: this.paymentRequest, fromDialog: false } }));
this.resetData();
}
});

@ -206,7 +206,7 @@ export class CLNLightningSendPaymentsComponent implements OnInit, OnDestroy {
keysendPayment() {
if (this.keysendAmount) {
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_KEYSEND, paymentType: PaymentTypes.KEYSEND, pubkey: this.pubkey, amount: this.keysendAmount * 1000, fromDialog: true } }));
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_KEYSEND, paymentType: PaymentTypes.KEYSEND, destination: this.pubkey, amount_msat: this.keysendAmount * 1000, fromDialog: true } }));
}
}
@ -214,9 +214,9 @@ export class CLNLightningSendPaymentsComponent implements OnInit, OnDestroy {
this.paymentError = '';
if (this.paymentType === PaymentTypes.INVOICE) {
if (this.zeroAmtInvoice && this.paymentAmount) {
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_PAYMENT, paymentType: PaymentTypes.INVOICE, invoice: this.paymentRequest, amount: this.paymentAmount * 1000, fromDialog: true } }));
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_PAYMENT, paymentType: PaymentTypes.INVOICE, bolt11: this.paymentRequest, amount_msat: this.paymentAmount * 1000, fromDialog: true } }));
} else {
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_PAYMENT, paymentType: PaymentTypes.INVOICE, invoice: this.paymentRequest, fromDialog: true } }));
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_PAYMENT, paymentType: PaymentTypes.INVOICE, bolt11: this.paymentRequest, fromDialog: true } }));
}
} else if (this.paymentType === PaymentTypes.OFFER) {
if (!this.offerInvoice) {
@ -228,7 +228,7 @@ export class CLNLightningSendPaymentsComponent implements OnInit, OnDestroy {
} else {
if (this.offerAmount) {
this.store.dispatch(sendPayment({ payload: { uiMessage: UI_MESSAGES.SEND_PAYMENT, paymentType: PaymentTypes.OFFER,
invoice: this.offerInvoice.invoice, saveToDB: this.flgSaveToDB, bolt12: this.offerRequest, amount: this.offerAmount * 1000,
bolt11: this.offerInvoice.invoice, saveToDB: this.flgSaveToDB, bolt12: this.offerRequest, amount_msat: this.offerAmount * 1000,
zeroAmtOffer: this.zeroAmtOffer, title: this.offerTitle, issuer: this.offerIssuer, description: this.offerDescription,
fromDialog: true } }));
}

@ -114,9 +114,9 @@ export interface ListInvoices {
}
export interface OnChain {
address?: string;
satoshis?: string;
feeRate?: string;
destination?: string;
satoshi?: string;
feerate?: string;
minconf?: number;
utxos?: string[];
}
@ -454,15 +454,26 @@ export interface SendPayment {
uiMessage: string;
fromDialog: boolean;
paymentType: PaymentTypes;
destination?: string;
amount_msat?: number;
label?: string;
maxfeepercent?: number;
retry_for?: number;
maxdelay?: number;
exemptfee?: number;
extratlvs?: any;
title?: string;
issuer?: string;
invoice?: string;
bolt11?: string;
description?: string;
saveToDB?: boolean;
bolt12?: string;
amount?: number;
zeroAmtOffer?: boolean;
pubkey?: string;
riskfactor?: number;
localinvreqid?: string;
exclude?: string[];
maxfee?: number;
saveToDB?: boolean;
}
export interface GetQueryRoutes {

@ -46,11 +46,15 @@ export class DataService implements OnDestroy {
decodePayment(payment: string, fromDialog: boolean) {
return this.lnImplementationUpdated.pipe(first(), mergeMap((updatedLnImplementation) => {
let url = this.APIUrl + '/' + updatedLnImplementation + API_END_POINTS.PAYMENTS_API + '/decode/' + payment;
let method = 'GET';
let body = null;
if (updatedLnImplementation === 'cln') {
url = this.APIUrl + '/' + updatedLnImplementation + API_END_POINTS.UTILITY_API + '/decode/' + payment;
url = this.APIUrl + '/' + updatedLnImplementation + API_END_POINTS.UTILITY_API + '/decode';
body = { string: payment };
method = 'POST';
}
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.DECODE_PAYMENT }));
return this.httpClient.get(url).pipe(
return this.httpClient.request(method, url, body).pipe(
takeUntil(this.unSubs[0]),
map((res: any) => {
this.store.dispatch(closeSpinner({ payload: UI_MESSAGES.DECODE_PAYMENT }));
@ -263,7 +267,7 @@ export class DataService implements OnDestroy {
}));
} else if (implementation === 'CLN') {
this.store.dispatch(openSpinner({ payload: UI_MESSAGES.GET_FORWARDING_HISTORY }));
return this.httpClient.get(this.APIUrl + '/cln' + API_END_POINTS.CHANNELS_API + '/listForwards?status=' + status).pipe(
return this.httpClient.post(this.APIUrl + '/cln' + API_END_POINTS.CHANNELS_API + '/listForwards', { status: status || 'settled' }).pipe(
takeUntil(this.unSubs[8]),
withLatestFrom(this.store.select(channels)),
mergeMap(([res, channelsSelector]: [any, { activeChannels: ChannelCLN[], pendingChannels: ChannelCLN[], inactiveChannels: ChannelCLN[], apiCallStatus: ApiCallStatusPayload }]) => {

Loading…
Cancel
Save