Help section update #1112

Help section update #1112
Liquidity Ads LeaseFeeBase unit bug fix
Bitcoind config bug fix
pull/1113/head
ShahanaFarooqui 2 years ago
parent 65ee024e8d
commit 4d5bb8e3dc

@ -245,7 +245,7 @@ export const getConfig = (req, res, next) => {
if (jsonConfig['Application Options'] && jsonConfig['Application Options'].color) {
jsonConfig['Application Options'].color = '#' + jsonConfig['Application Options'].color;
}
if (req.session.selectedNode.ln_implementation === 'ECL' && !jsonConfig['eclair.api.password']) {
if (req.params.nodeType === 'ln' && req.session.selectedNode.ln_implementation === 'ECL' && !jsonConfig['eclair.api.password']) {
fileFormat = 'HOCON';
jsonConfig = parseHocon(data);
}

@ -13,6 +13,6 @@
<style>@font-face{font-family:Roboto;src:url(Roboto-Thin.f7a95c9c5999532c.woff2) format("woff2"),url(Roboto-Thin.c13c157cb81e8ebb.woff) format("woff");font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(Roboto-ThinItalic.b0e084abf689f393.woff2) format("woff2"),url(Roboto-ThinItalic.1111028df6cea564.woff) format("woff");font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(Roboto-Light.0e01b6cd13b3857f.woff2) format("woff2"),url(Roboto-Light.603ca9a537b88428.woff) format("woff");font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(Roboto-LightItalic.232ef4b20215f720.woff2) format("woff2"),url(Roboto-LightItalic.1b5e142f787151c8.woff) format("woff");font-weight:300;font-style:italic}@font-face{font-family:Roboto;src:url(Roboto-Regular.475ba9e4e2d63456.woff2) format("woff2"),url(Roboto-Regular.bcefbfee882bc1cb.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(Roboto-RegularItalic.e3a9ebdaac06bbc4.woff2) format("woff2"),url(Roboto-RegularItalic.0668fae6af0cf8c2.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(Roboto-Medium.457532032ceb0168.woff2) format("woff2"),url(Roboto-Medium.6e1ae5f0b324a0aa.woff) format("woff");font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(Roboto-MediumItalic.872f7060602d55d2.woff2) format("woff2"),url(Roboto-MediumItalic.e06fb533801cbb08.woff) format("woff");font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(Roboto-Bold.447291a88c067396.woff2) format("woff2"),url(Roboto-Bold.fc482e6133cf5e26.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(Roboto-BoldItalic.1b15168ef6fa4e16.woff2) format("woff2"),url(Roboto-BoldItalic.e26ba339b06f09f7.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(Roboto-Black.2eaa390d458c877d.woff2) format("woff2"),url(Roboto-Black.b25f67ad8583da68.woff) format("woff");font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(Roboto-BlackItalic.7dc03ee444552bc5.woff2) format("woff2"),url(Roboto-BlackItalic.c8dc642467cb3099.woff) format("woff");font-weight:900;font-style:italic}html{width:100%;height:99%;line-height:1.5;overflow-x:hidden;font-family:Roboto,sans-serif!important;font-size:62.5%}body{box-sizing:border-box;height:100%;margin:0;overflow:hidden}*{margin:0;padding:0}</style><link rel="stylesheet" href="styles.43515fc39338348b.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.43515fc39338348b.css"></noscript></head>
<body>
<rtl-app></rtl-app>
<script src="runtime.3a8ac8969006b863.js" type="module"></script><script src="polyfills.eddc63f1737a019a.js" type="module"></script><script src="main.6973911fedddc5f0.js" type="module"></script>
<script src="runtime.3a8ac8969006b863.js" type="module"></script><script src="polyfills.eddc63f1737a019a.js" type="module"></script><script src="main.0a28b146399d54a7.js" type="module"></script>
</body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -12,7 +12,7 @@
"buildfrontend": "ng build --configuration production",
"buildbackend": "tsc --project tsconfig.json",
"watchbackend": "tsc --project tsconfig.json --watch",
"server": "set NODE_ENV=development&&nodemon ./rtl.js",
"server": "set NODE_ENV=development&&nodemon --watch backend --watch server ./rtl.js",
"serverUbuntu": "NODE_ENV=development nodemon --watch backend --watch server ./rtl.js",
"testdev": "ng test --watch=true --code-coverage",
"test": "ng test --watch=false",

@ -241,7 +241,7 @@ export const getConfig = (req, res, next) => {
if (jsonConfig['Application Options'] && jsonConfig['Application Options'].color) {
jsonConfig['Application Options'].color = '#' + jsonConfig['Application Options'].color;
}
if (req.session.selectedNode.ln_implementation === 'ECL' && !jsonConfig['eclair.api.password']) {
if (req.params.nodeType === 'ln' && req.session.selectedNode.ln_implementation === 'ECL' && !jsonConfig['eclair.api.password']) {
fileFormat = 'HOCON';
jsonConfig = parseHocon(data);
}

@ -12,7 +12,7 @@
</mat-expansion-panel-header>
<mat-panel-description fxLayout="column" fxFlex="100" fxLayoutAlign="start start">
<span class="pre-wrap" [innerHTML]="helpTopic.help.answer"></span>
<a class="mt-2" [routerLink]="flgLoggedIn ? LNPLink + helpTopic.help.link : '/login'">{{!flgLoggedIn ? 'Login to go to the page' : helpTopic.help.linkCaption}}</a>
<a class="mt-2" [routerLink]="flgLoggedIn ? helpTopic.help.link : '/login'">{{!flgLoggedIn ? 'Login to go to the page' : helpTopic.help.linkCaption}}</a>
</mat-panel-description>
</mat-expansion-panel>
</div>

@ -24,7 +24,28 @@ export class HelpComponent implements OnInit, OnDestroy {
public flgLoggedIn = false;
private unSubs = [new Subject(), new Subject(), new Subject(), new Subject()];
constructor(private store: Store<RTLState>, private sessionService: SessionService) {
constructor(private store: Store<RTLState>, private sessionService: SessionService) {}
ngOnInit() {
this.store.select(rootSelectedNode).pipe(takeUntil(this.unSubs[0])).subscribe((selNode) => {
this.selNode = selNode;
if (this.selNode.lnImplementation && this.selNode.lnImplementation.trim() !== '') {
this.LNPLink = '/' + this.selNode.lnImplementation.toLowerCase() + '/';
this.addHelpTopics();
}
});
this.sessionService.watchSession().
pipe(takeUntil(this.unSubs[1])).
subscribe((session) => {
this.flgLoggedIn = !!session.token;
});
if (this.sessionService.getItem('token')) {
this.flgLoggedIn = true;
}
}
addHelpTopics() {
this.helpTopics = [];
this.helpTopics.push(new HelpTopic({
question: 'Getting started',
answer: 'Funding your node is the first step to get started.\n' +
@ -33,8 +54,8 @@ export class HelpComponent implements OnInit, OnDestroy {
'2. Send funds to the address.\n' +
'3. Wait for the balance to be confirmed on-chain before proceeding further.\n' +
'3. Connecting with network peers and opening channels is next.\n',
link: 'onchain',
linkCaption: 'On-Chain page',
link: this.LNPLink + 'onchain/receive/utxos',
linkCaption: 'On-Chain',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
@ -48,24 +69,25 @@ export class HelpComponent implements OnInit, OnDestroy {
' a. View Info - View the peer details.\n' +
' b. Open Channel - Open channel with the peer.\n' +
' c. Disconnect - Disconnect from the peer.\n',
link: 'peerschannels',
linkCaption: 'Peers/Channels page',
link: this.LNPLink + 'connections/peers',
linkCaption: 'Peers',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
question: 'Opening Channels',
answer: 'Open channels with a connected network peer.\n' +
answer: 'Open channels with a connected peer.\n' +
'Go to "Peer/Channels" page under the "Lightning" menu:\n' +
'1. On the "Channels" section, select the alias of the connected peer from the drop-down\n' +
'1. On the "Channels" section, click on "Open Channel"\n' +
'2. On the "Open Channel" modal, select the alias of the connected peer from the drop-down\n' +
'2. Specify the amount to commit to the channel and click on "Open Channel".\n' +
'3. There are a variety of options available while opening a channel. \n' +
' a. Private Channel - When this option is selected, a private channel is opened with the peer. \n' +
' b. Priority (advanced option) - Specify either Target confirmation Block or Fee in Sat/vByte. \n' +
' c. Spend Unconfirmd Output (advanced option) - Allow channels to be opened with unconfirmed UTXOs.\n' +
'4. Track the pending open channels under the "Pending" tab . \n' +
'4. Track the pending open channels under the "Pending" tab. \n' +
'5. Wait for the channel to be confirmed. Only a confimed channel can be used for payments or routing. \n',
link: 'peerschannels',
linkCaption: 'Peers/Channels page',
link: this.LNPLink + 'connections/channels/open',
linkCaption: 'Channels',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
@ -76,49 +98,70 @@ export class HelpComponent implements OnInit, OnDestroy {
' a. View Info - View the channel details.\n' +
' b. View Remote Fee - View the fee policy on the channel of the remote peer.\n' +
' c. Update Fee Policy - Modify the fee policy on the channel.\n' +
' d. Close Channel - Close the channel.\n' +
' d. Circular Rebalance - Off-chain rebalance channels by making a payment to yourself across a circular path of chained payment channels.\n' +
' e. Close Channel - Close the channel.\n' +
'2. Balance Score is a "balancedness" metric score for the channel. \n' +
' a. It helps measure how balanced the remote and local balances are, on a channel.\n' +
' b. A perfectly balanced channel has a score of one, where as a completely lopsided one has a score of zero.\n' +
' c. The formula for calculating the score is "1 - abs((local bal - remote bal)/total bal)".\n',
link: 'peerschannels',
linkCaption: 'Peers/Channels page',
link: this.LNPLink + 'connections/channels/open',
linkCaption: 'Channels',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
question: 'Lightning Transactions - Payments',
question: 'Buying Liquidity',
answer: 'Buying liquidity for your node.\n' +
'Go to "Liquidity Ads" page under the "Lightning" menu:\n' +
' 1. Filter ads by liquidity amount and channel opening fee rate.\n' +
' 2. Research additionally on liquidity provider nodes before selecting.\n' +
' 3. Select the best liquidity node peer for your need and click on "Open Channel" from "Actions" drop-down.\n' +
' 4. Confirm amount, rates and total cost on the modal and click on "Execute" to buy liquidity.\n',
link: this.LNPLink + 'liquidityads',
linkCaption: 'Liquidity Ads',
lnImplementation: 'CLN'
}));
this.helpTopics.push(new HelpTopic({
question: 'Payments',
answer: 'Sending Payments from your node.\n' +
'Go to the "Transactions" page under the "Lightning" menu :\n' +
'Payments tab is for making payments via your node\n' +
' 1. Input a non-expired lightning invoice (Bolt11 format) in the "Payment request" field and click on "Send Payment" to send.\n' +
' 1. Input a non-expired lightning invoice (Bolt11 format) in the "Payment Request" field and click on "Send Payment" to send.\n' +
' 2. Advanced option # 1 (LND only) - Specify a limit on the routing fee which you are willing to pay, for the payment.\n' +
' 3. Advanced option # 2 (LND only) - Specify the outgoing channel which you want the payment to go through.\n',
link: 'transactions',
linkCaption: 'Transactions page',
link: this.LNPLink + 'transactions/payments',
linkCaption: 'Payments',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
question: 'Lightning Transactions - Invoices',
question: 'Invoices',
answer: 'Receiving Payments on your node.\n' +
'Go to the "Transactions" page under the "Lightning" menu :\n' +
'Invoices tab is for receiving payments on your node.\n' +
' 1. Memo - Description you want to provide on the invoice.\n' +
' 2. Expiry - The time period, after which the invoice will be invalid.\n' +
' 3. Private Routing Hints - Generate an invoice with routing hints for private channels.\n',
link: 'transactions',
linkCaption: 'Transactions page',
link: this.LNPLink + 'transactions/invoices',
linkCaption: 'Invoices',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
question: 'Lightning Transactions - Query Route',
answer: 'Querying Payment Routes.\n' +
question: 'Offers',
answer: 'Send offer payments, create offer invoices and bookmark paid offers on your node.\n' +
'Go to the "Transactions" page under the "Lightning" menu :\n' +
'Query Routes tab is for querying a potential path to a node and a routing fee estimate for a payment amount.\n' +
' 1. Destination Pubkey - Pubkey of the node, you want to send the payment to.\n' +
' 2. Amount - Amount in Sats, which you want to send to the node.\n',
link: 'transactions',
linkCaption: 'Transactions page',
lnImplementation: 'ALL'
'Payment for bolt12 offer invoice can be done on "Payments" tab:\n' +
' 1. Click on "Send Payment" button.\n' +
' 2. Select "Offer" option on the modal.\n' +
' 2. Offer Request - Input offer request (Bolt12 format) in the input box.\n' +
' 3. Bookmark - Select the checkbox to bookmark this offer for future use.\n' +
'Offers tab is for creating bolt12 offer invoice on your node:\n' +
' 1. Click on "Create Offer" button.\n' +
' 2. Description - Description you want to provide on the offer invoice.\n' +
' 3. Amount - Amount for the offer invoice.\n' +
' 4. Vendor - Vendor of the offer.\n' +
'Paid offer bookmarks shows the list of paid offers saved for future payments.\n',
link: this.LNPLink + 'transactions/offers',
linkCaption: 'Offers',
lnImplementation: 'CLN'
}));
this.helpTopics.push(new HelpTopic({
question: 'Channel Backups',
@ -128,7 +171,7 @@ export class HelpComponent implements OnInit, OnDestroy {
'You can verify the all channel backup file by clicking on "Verify All" Button on the backup page.\n' +
'You can also backup each channel individually and verify them.\n' +
'** Keep taking backups of your channels regularly and store them in redundant locations **.\n',
link: 'backup',
link: this.LNPLink + 'channelbackup/bckup',
linkCaption: 'Channel Backups',
lnImplementation: 'LND'
}));
@ -150,8 +193,8 @@ export class HelpComponent implements OnInit, OnDestroy {
'8. The pending close channels can be viewed under the "Pending" tab on the "Peer/Channels" page.\n' +
'9. Once the channel is closed, the corresponding pending on-chain transactions can be viewed on the "On-Chain" page.\n' +
'10. Once the transactions are confirmed, the channels funds will be restored to your LND Wallet.\n',
link: 'backup',
linkCaption: 'Channel Backups',
link: this.LNPLink + 'channelbackup/restore',
linkCaption: 'Channel Restore',
lnImplementation: 'LND'
}));
this.helpTopics.push(new HelpTopic({
@ -159,10 +202,19 @@ export class HelpComponent implements OnInit, OnDestroy {
answer: 'Transactions routed by the node.\n' +
'Go to "Routing" page under the "Lightning" menu :\n' +
'Transactions routed by the node are listed on this page along with channels and the fee earned by transaction.\n',
link: 'routing',
link: this.LNPLink + 'routing/forwardinghistory',
linkCaption: 'Forwarding History',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
question: 'Lightning Reports',
answer: 'Routing and transactions data reports.\n' +
'Go to "Reports" page under the "Lightning" menu :\n' +
'Report can be generated on monthly/yearly basis by selecting the reporting period, month, and year.\n',
link: this.LNPLink + 'reports/routingreport',
linkCaption: 'Reports',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
question: 'Graph Lookup',
answer: 'Querying your node graph for network node and channel information.\n' +
@ -171,48 +223,73 @@ export class HelpComponent implements OnInit, OnDestroy {
'You can lookup information on nodes and channels from your graph:\n' +
' 1. Node Lookup - Enter the pubkey to perform the lookup.\n' +
' 2. Channel Lookup - Enter the short channel ID to perform the lookup.\n',
link: 'lookups',
linkCaption: 'Graph Lookup page',
link: this.LNPLink + 'graph/lookups',
linkCaption: 'Graph Lookup',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
question: 'Settings',
answer: 'RTL Offers certain customizations on the UI to personalize your experience on the app\n' +
'Go to "Settings" page to access the customization options.\n' +
question: 'Query Route',
answer: 'Querying Payment Routes.\n' +
'Go to the "Graph Lookup" page under the "Lightning" menu :\n' +
'Query Routes tab is for querying a potential path to a node and a routing fee estimate for a payment amount.\n' +
' 1. Destination Pubkey - Pubkey of the node, you want to send the payment to.\n' +
' 2. Amount - Amount in Sats, which you want to send to the node.\n',
link: this.LNPLink + 'graph/queryroutes',
linkCaption: 'Query Routes',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
question: 'Sign & Verify Messages',
answer: 'Messages signing and verification.\n' +
'Go to the "Sign/Verify" page under the "Lightning" menu :\n' +
' 1. Sign your message on "Sign" tab.\n' +
' 2. Go to "Verify" tab to verify a message.\n',
link: this.LNPLink + 'messages/sign',
linkCaption: 'Messages',
lnImplementation: 'LND'
}));
this.helpTopics.push(new HelpTopic({
question: 'Sign & Verify Messages',
answer: 'Messages signing and verification.\n' +
'Go to the "Sign/Verify" page under the "Lightning" menu :\n' +
' 1. Sign your message on "Sign" tab.\n' +
' 2. Go to "Verify" tab to verify a message.\n',
link: this.LNPLink + 'messages/sign',
linkCaption: 'Messages',
lnImplementation: 'CLN'
}));
this.helpTopics.push(new HelpTopic({
question: 'Node Settings',
answer: 'RTL offers certain customizations on the UI to personalize your experience on the app\n' +
'Go to "Node Config" page to access the customization options.\n' +
'Node Layout Options\n' +
' 1. User Persona - Two options are available to change the dashboard based on the persona.\n' +
' 2. Currency Unit - You can choose your preferred fiat currency, to view the onchain and channel balances in the choosen fiat currency.\n' +
' 3. Default Node - If you are managing multiple nodes via RTL UI, you can select the default node to load upon login.\n' +
'Other Customizations include day and night mode and a choice of color themes to select from.\n',
' 3. Other customizations include day and night mode and a choice of color themes to select from.\n' +
'Services Options\n' +
' Loop (LND only), Boltz (LND only) & Peerswap (CLN only) services can be configured.\n' +
'Experimental Options (CLN only)\n' +
' Offers and Liquidity Ads can be enabled/disabled.\n' +
'Show LN Config (if configured)\n' +
' Shows lightning config file.\n',
link: '../config/layout',
linkCaption: 'Node Settings',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({
question: 'Application Settings',
answer: 'RTL also offers certain customizations on the application level\n' +
'Go to top right menu "Settings" page to access these options.\n' +
'Default Node Option\n' +
'If you are managing multiple nodes via RTL UI, you can select the default node to load upon login.\n' +
'Authentication Option\n' +
'Password and 2FA update options are available here.\n' +
'Show Bitcoin Config (if configured)\n' +
' Shows bitcoin config file.\n',
link: '../settings/app',
linkCaption: 'Application Settings',
lnImplementation: 'ALL'
}));
}
ngOnInit() {
this.store.select(rootSelectedNode).pipe(takeUntil(this.unSubs[0])).subscribe((selNode) => {
this.selNode = selNode;
switch (this.selNode.lnImplementation?.toUpperCase()) {
case 'CLN':
this.LNPLink = '/cln/';
break;
case 'ECL':
this.LNPLink = '/ecl/';
break;
default:
this.LNPLink = '/lnd/';
break;
}
});
this.sessionService.watchSession().
pipe(takeUntil(this.unSubs[1])).
subscribe((session) => {
this.flgLoggedIn = !!session.token;
});
if (this.sessionService.getItem('token')) {
this.flgLoggedIn = true;
}
}
ngOnDestroy() {

@ -115,7 +115,7 @@ export class ExperimentalSettingsComponent implements OnInit, OnDestroy {
onUpdateFundingPolicy() {
this.flgUpdateCalled = true;
this.updateMsg = {};
this.dataService.getOrUpdateFunderPolicy(this.selPolicyType.id, this.policyMod, this.leaseFeeBaseSat, this.leaseFeeBasis, (this.channelFeeMaxBaseSat || 0) * 1000, this.channelFeeMaxProportional ? this.channelFeeMaxProportional / 1000 : 0).
this.dataService.getOrUpdateFunderPolicy(this.selPolicyType.id, this.policyMod, ((this.leaseFeeBaseSat || 0) * 1000), this.leaseFeeBasis, (this.channelFeeMaxBaseSat || 0) * 1000, this.channelFeeMaxProportional ? this.channelFeeMaxProportional / 1000 : 0).
pipe(takeUntil(this.unSubs[4])).
subscribe({
next: (updatePolicyRes: any) => {

@ -16,7 +16,6 @@ import { fetchConfig } from '../../../../store/rtl.actions';
})
export class LNPConfigComponent implements OnInit, OnDestroy {
public selectedNodeType = '';
public configData = '';
public fileFormat = 'INI';
public faCog = faCog;
@ -25,14 +24,7 @@ export class LNPConfigComponent implements OnInit, OnDestroy {
constructor(private store: Store<RTLState>, private rtlEffects: RTLEffects, private router: Router) { }
ngOnInit() {
this.selectedNodeType = (this.router.url.includes('bconfig')) ? 'bitcoind' : 'ln';
this.router.events.pipe(takeUntil(this.unSubs[0]), filter((e) => e instanceof ResolveEnd)).
subscribe({
next: (value: ResolveEnd | Event) => {
this.selectedNodeType = ((<ResolveEnd>value).urlAfterRedirects.includes('bconfig')) ? 'bitcoind' : 'ln';
}
});
this.store.dispatch(fetchConfig({ payload: this.selectedNodeType }));
this.store.dispatch(fetchConfig({ payload: 'ln' }));
this.rtlEffects.showLnConfig.
pipe(takeUntil(this.unSubs[1])).
subscribe((config: any) => {

@ -7,7 +7,8 @@
<mat-card-content fxLayout="column">
<nav mat-tab-nav-bar>
<div role="tab" mat-tab-link class="mat-tab-label" [active]="activeLink === links[0].link" (click)="activeLink = links[0].link" routerLink="{{links[0].link}}">{{links[0].name}}</div>
<div role="tab" mat-tab-link *ngIf="selNode?.lnImplementation?.toUpperCase() === 'LND' || selNode?.lnImplementation?.toUpperCase() === 'CLN'" class="mat-tab-label" [active]="activeLink === links[1].link" (click)="activeLink = links[1].link" routerLink="{{links[1].link}}" [state]="{ initial: false }">{{links[1].name}}</div>
<!-- <div role="tab" mat-tab-link *ngIf="selNode?.lnImplementation?.toUpperCase() === 'LND' || selNode?.lnImplementation?.toUpperCase() === 'CLN'" class="mat-tab-label" [active]="activeLink === links[1].link" (click)="activeLink = links[1].link" routerLink="{{links[1].link}}" [state]="{ initial: false }">{{links[1].name}}</div> -->
<div role="tab" mat-tab-link *ngIf="selNode?.lnImplementation?.toUpperCase() === 'LND'" class="mat-tab-label" [active]="activeLink === links[1].link" (click)="activeLink = links[1].link" routerLink="{{links[1].link}}" [state]="{ initial: false }">{{links[1].name}}</div>
<div role="tab" mat-tab-link *ngIf="selNode?.lnImplementation?.toUpperCase() === 'CLN'" class="mat-tab-label" [active]="activeLink === links[2].link" (click)="activeLink = links[2].link" routerLink="{{links[2].link}}">{{links[2].name}}</div>
<div role="tab" mat-tab-link *ngIf="showLnConfig" class="mat-tab-label" [active]="activeLink === links[3].link" (click)="showLnConfigClicked()">{{links[3].name}}</div>
</nav>

@ -16,7 +16,6 @@ import { fetchConfig } from '../../../../store/rtl.actions';
})
export class BitcoinConfigComponent implements OnInit, OnDestroy {
public selectedNodeType = '';
public configData = '';
public fileFormat = 'INI';
public faCog = faCog;
@ -25,14 +24,7 @@ export class BitcoinConfigComponent implements OnInit, OnDestroy {
constructor(private store: Store<RTLState>, private rtlEffects: RTLEffects, private router: Router) { }
ngOnInit() {
this.selectedNodeType = (this.router.url.includes('bconfig')) ? 'bitcoind' : 'ln';
this.router.events.pipe(takeUntil(this.unSubs[0]), filter((e) => e instanceof ResolveEnd)).
subscribe({
next: (value: ResolveEnd | Event) => {
this.selectedNodeType = ((<ResolveEnd>value).urlAfterRedirects.includes('bconfig')) ? 'bitcoind' : 'ln';
}
});
this.store.dispatch(fetchConfig({ payload: this.selectedNodeType }));
this.store.dispatch(fetchConfig({ payload: 'bitcoind' }));
this.rtlEffects.showLnConfig.
pipe(takeUntil(this.unSubs[1])).
subscribe((config: any) => {

@ -550,13 +550,10 @@ export class RTLEffects implements OnDestroy {
initializeNode(node: ConfigSettingsNode, isInitialSetup: boolean) {
this.logger.info('Initializing node from RTL Effects.');
const landingPage = isInitialSetup ? '' : 'HOME';
let selNode = {};
const selNode = { userPersona: node.settings.userPersona, channelBackupPath: node.settings.channelBackupPath, selCurrencyUnit: node.settings.currencyUnit,
currencyUnits: CURRENCY_UNITS, fiatConversion: node.settings.fiatConversion, lnImplementation: node.lnImplementation, swapServerUrl: node.settings.swapServerUrl, boltzServerUrl: node.settings.boltzServerUrl, enableOffers: node.settings.enableOffers, enablePeerswap: node.settings.enablePeerswap };
if (node.settings.fiatConversion && node.settings.currencyUnit) {
selNode = { userPersona: node.settings.userPersona, channelBackupPath: node.settings.channelBackupPath, selCurrencyUnit: node.settings.currencyUnit,
currencyUnits: [...CURRENCY_UNITS, node.settings.currencyUnit], fiatConversion: node.settings.fiatConversion, lnImplementation: node.lnImplementation, swapServerUrl: node.settings.swapServerUrl, boltzServerUrl: node.settings.boltzServerUrl, enableOffers: node.settings.enableOffers, enablePeerswap: node.settings.enablePeerswap };
} else {
selNode = { userPersona: node.settings.userPersona, channelBackupPath: node.settings.channelBackupPath, selCurrencyUnit: node.settings.currencyUnit,
currencyUnits: CURRENCY_UNITS, fiatConversion: node.settings.fiatConversion, lnImplementation: node.lnImplementation, swapServerUrl: node.settings.swapServerUrl, boltzServerUrl: node.settings.boltzServerUrl, enableOffers: node.settings.enableOffers, enablePeerswap: node.settings.enablePeerswap };
selNode['currencyUnits'] = [...CURRENCY_UNITS, node.settings.currencyUnit];
}
this.sessionService.removeItem('lndUnlocked');
this.sessionService.removeItem('clUnlocked');

Loading…
Cancel
Save