Rebalance autocomplete (#756)

Enable search on the 'Receive from Peer' on circular rebalancing modal #741
pull/758/head
ShahanaFarooqui 3 years ago committed by GitHub
parent 01c9ec6763
commit 8ba64522b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -122,7 +122,6 @@
"no-undefined": "error",
"block-spacing": "error",
"brace-style": "error",
"capitalized-comments": "error",
"comma-style": "error",
"func-call-spacing": "error",
"func-name-matching": "error",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -10,9 +10,9 @@
<link i18n-rel="" rel="mask-icon" href="assets/images/favicon-light/safari-pinned-tab.svg" color="#5bbad5">
<meta i18n-content="" name="msapplication-TileColor" content="#da532c">
<meta i18n-content="" name="theme-color" content="#ffffff">
<style>@font-face{font-family:Roboto;src:url(Roboto-Thin.dbd56bd3357dc3617fe5.woff2) format("woff2"),url(Roboto-Thin.e7f7c82374bd0ebef14b.woff) format("woff");font-weight:100;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-ThinItalic.a8cef84f735ef887abdc.woff2) format("woff2"),url(Roboto-ThinItalic.5dd9349c940073834e9a.woff) format("woff");font-weight:100;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Light.c27d89ac77468ae18f28.woff2) format("woff2"),url(Roboto-Light.d923dfafc0c5183b59aa.woff) format("woff");font-weight:300;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-LightItalic.506274c7228cf81cae4d.woff2) format("woff2"),url(Roboto-LightItalic.d4b8c137518d9d92bb28.woff) format("woff");font-weight:300;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Regular.64cfb66c866ea50cad47.woff2) format("woff2"),url(Roboto-Regular.e02e9d6ff5547f7e9962.woff) format("woff");font-weight:400;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-RegularItalic.4dd2af1e8df532f41db8.woff2) format("woff2"),url(Roboto-RegularItalic.5ea38fff9eebef99c5df.woff) format("woff");font-weight:400;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Medium.1d3bced88509b0838984.woff2) format("woff2"),url(Roboto-Medium.092c6130df8fd2199888.woff) format("woff");font-weight:500;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-MediumItalic.d620b8f53f75966fe42e.woff2) format("woff2"),url(Roboto-MediumItalic.18ff1628c628080166c1.woff) format("woff");font-weight:500;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Bold.92fbd4e93cf0a5dbebaa.woff2) format("woff2"),url(Roboto-Bold.73288d91c325e82a5b92.woff) format("woff");font-weight:700;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-BoldItalic.5f600d98a73d800ae575.woff2) format("woff2"),url(Roboto-BoldItalic.6d89acbd21d7e3fbecb2.woff) format("woff");font-weight:700;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Black.41ed1105a6ebb8ffe34e.woff2) format("woff2"),url(Roboto-Black.937491dfcbe64ca9a9f1.woff) format("woff");font-weight:900;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-BlackItalic.50ca4c51ebc27e7e7d2f.woff2) format("woff2"),url(Roboto-BlackItalic.2e1ee657996854c6f427.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;margin:0;}body{height:100%;overflow:hidden;}*{margin:0;padding:0;}</style><link rel="stylesheet" href="styles.c3ba8085d22fa064e47d.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.c3ba8085d22fa064e47d.css"></noscript></head>
<style>@font-face{font-family:Roboto;src:url(Roboto-Thin.dbd56bd3357dc3617fe5.woff2) format("woff2"),url(Roboto-Thin.e7f7c82374bd0ebef14b.woff) format("woff");font-weight:100;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-ThinItalic.a8cef84f735ef887abdc.woff2) format("woff2"),url(Roboto-ThinItalic.5dd9349c940073834e9a.woff) format("woff");font-weight:100;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Light.c27d89ac77468ae18f28.woff2) format("woff2"),url(Roboto-Light.d923dfafc0c5183b59aa.woff) format("woff");font-weight:300;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-LightItalic.506274c7228cf81cae4d.woff2) format("woff2"),url(Roboto-LightItalic.d4b8c137518d9d92bb28.woff) format("woff");font-weight:300;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Regular.64cfb66c866ea50cad47.woff2) format("woff2"),url(Roboto-Regular.e02e9d6ff5547f7e9962.woff) format("woff");font-weight:400;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-RegularItalic.4dd2af1e8df532f41db8.woff2) format("woff2"),url(Roboto-RegularItalic.5ea38fff9eebef99c5df.woff) format("woff");font-weight:400;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Medium.1d3bced88509b0838984.woff2) format("woff2"),url(Roboto-Medium.092c6130df8fd2199888.woff) format("woff");font-weight:500;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-MediumItalic.d620b8f53f75966fe42e.woff2) format("woff2"),url(Roboto-MediumItalic.18ff1628c628080166c1.woff) format("woff");font-weight:500;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Bold.92fbd4e93cf0a5dbebaa.woff2) format("woff2"),url(Roboto-Bold.73288d91c325e82a5b92.woff) format("woff");font-weight:700;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-BoldItalic.5f600d98a73d800ae575.woff2) format("woff2"),url(Roboto-BoldItalic.6d89acbd21d7e3fbecb2.woff) format("woff");font-weight:700;font-style:italic;}@font-face{font-family:Roboto;src:url(Roboto-Black.41ed1105a6ebb8ffe34e.woff2) format("woff2"),url(Roboto-Black.937491dfcbe64ca9a9f1.woff) format("woff");font-weight:900;font-style:normal;}@font-face{font-family:Roboto;src:url(Roboto-BlackItalic.50ca4c51ebc27e7e7d2f.woff2) format("woff2"),url(Roboto-BlackItalic.2e1ee657996854c6f427.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;margin:0;}body{height:100%;overflow:hidden;}*{margin:0;padding:0;}</style><link rel="stylesheet" href="styles.08f05775866285e5b944.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.08f05775866285e5b944.css"></noscript></head>
<body>
<rtl-app></rtl-app>
<script src="runtime.a2fa6b6c89e5ea8b231e.js" defer></script><script src="polyfills.a979cbbe16939013cdcf.js" defer></script><script src="main.6a6137c3a50e963e7a29.js" defer></script>
<script src="runtime.ee01a2aff364825492b2.js" defer></script><script src="polyfills.a979cbbe16939013cdcf.js" defer></script><script src="main.6a6137c3a50e963e7a29.js" defer></script>
</body></html>

@ -1 +1 @@
(()=>{"use strict";var e,r,t,a={},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={id:e,loaded:!1,exports:{}};return a[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}n.m=a,e=[],n.O=(r,t,a,o)=>{if(!t){var l=1/0;for(s=0;s<e.length;s++){for(var[t,a,o]=e[s],d=!0,i=0;i<t.length;i++)(!1&o||l>=o)&&Object.keys(n.O).every(e=>n.O[e](t[i]))?t.splice(i--,1):(d=!1,o<l&&(l=o));d&&(e.splice(s--,1),r=a())}return r}o=o||0;for(var s=e.length;s>0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[t,a,o]},n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((r,t)=>(n.f[t](e,r),r),[])),n.u=e=>e+"."+{432:"d41638407d6f035aaed4",646:"04e55a7f093b0837f9ef",891:"71f48b394eb5f99317c3",958:"a55d8156c48e68ddc825"}[e]+".js",n.miniCssF=e=>"styles.c3ba8085d22fa064e47d.css",n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},t="rtl:",n.l=(e,a,o,l)=>{if(r[e])r[e].push(a);else{var d,i;if(void 0!==o)for(var s=document.getElementsByTagName("script"),u=0;u<s.length;u++){var c=s[u];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")==t+o){d=c;break}}d||(i=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,n.nc&&d.setAttribute("nonce",n.nc),d.setAttribute("data-webpack",t+o),d.src=e),r[e]=[a];var f=(t,a)=>{d.onerror=d.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),o&&o.forEach(e=>e(a)),t)return t(a)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=f.bind(null,d.onerror),d.onload=f.bind(null,d.onload),i&&document.head.appendChild(d)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.p="",(()=>{var e={666:0};n.f.j=(r,t)=>{var a=n.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else if(666!=r){var o=new Promise((t,o)=>a=e[r]=[t,o]);t.push(a[2]=o);var l=n.p+n.u(r),d=new Error;n.l(l,t=>{if(n.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var o=t&&("load"===t.type?"missing":t.type),l=t&&t.target&&t.target.src;d.message="Loading chunk "+r+" failed.\n("+o+": "+l+")",d.name="ChunkLoadError",d.type=o,d.request=l,a[1](d)}},"chunk-"+r,r)}else e[r]=0},n.O.j=r=>0===e[r];var r=(r,t)=>{var a,o,[l,d,i]=t,s=0;for(a in d)n.o(d,a)&&(n.m[a]=d[a]);if(i)var u=i(n);for(r&&r(t);s<l.length;s++)n.o(e,o=l[s])&&e[o]&&e[o][0](),e[l[s]]=0;return n.O(u)},t=self.webpackChunkrtl=self.webpackChunkrtl||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
(()=>{"use strict";var e,r,t,a={},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={id:e,loaded:!1,exports:{}};return a[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}n.m=a,e=[],n.O=(r,t,a,o)=>{if(!t){var l=1/0;for(s=0;s<e.length;s++){for(var[t,a,o]=e[s],d=!0,i=0;i<t.length;i++)(!1&o||l>=o)&&Object.keys(n.O).every(e=>n.O[e](t[i]))?t.splice(i--,1):(d=!1,o<l&&(l=o));d&&(e.splice(s--,1),r=a())}return r}o=o||0;for(var s=e.length;s>0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[t,a,o]},n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((r,t)=>(n.f[t](e,r),r),[])),n.u=e=>e+"."+{432:"d41638407d6f035aaed4",646:"04e55a7f093b0837f9ef",891:"5f11ad5350644feaa973",958:"a55d8156c48e68ddc825"}[e]+".js",n.miniCssF=e=>"styles.08f05775866285e5b944.css",n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},t="rtl:",n.l=(e,a,o,l)=>{if(r[e])r[e].push(a);else{var d,i;if(void 0!==o)for(var s=document.getElementsByTagName("script"),u=0;u<s.length;u++){var f=s[u];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==t+o){d=f;break}}d||(i=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,n.nc&&d.setAttribute("nonce",n.nc),d.setAttribute("data-webpack",t+o),d.src=e),r[e]=[a];var c=(t,a)=>{d.onerror=d.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),o&&o.forEach(e=>e(a)),t)return t(a)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=c.bind(null,d.onerror),d.onload=c.bind(null,d.onload),i&&document.head.appendChild(d)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.p="",(()=>{var e={666:0};n.f.j=(r,t)=>{var a=n.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else if(666!=r){var o=new Promise((t,o)=>a=e[r]=[t,o]);t.push(a[2]=o);var l=n.p+n.u(r),d=new Error;n.l(l,t=>{if(n.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var o=t&&("load"===t.type?"missing":t.type),l=t&&t.target&&t.target.src;d.message="Loading chunk "+r+" failed.\n("+o+": "+l+")",d.name="ChunkLoadError",d.type=o,d.request=l,a[1](d)}},"chunk-"+r,r)}else e[r]=0},n.O.j=r=>0===e[r];var r=(r,t)=>{var a,o,[l,d,i]=t,s=0;for(a in d)n.o(d,a)&&(n.m[a]=d[a]);if(i)var u=i(n);for(r&&r(t);s<l.length;s++)n.o(e,o=l[s])&&e[o]&&e[o][0](),e[l[s]]=0;return n.O(u)},t=self.webpackChunkrtl=self.webpackChunkrtl||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -248,13 +248,14 @@ common.handleError = (errRes, fileName, errMsg) => {
if (common.selectedNode) { fs.appendFile(common.selectedNode.log_file, msgStr, () => {}) }
const newErrorObj = {
statusCode: err.statusCode ? err.statusCode : err.status ? err.status : (err.error && err.error.code && err.error.code === 'ECONNREFUSED') ? 503 : 500,
message: err.message ? err.message : errMsg,
message: (err.error && err.error.message) ? err.error.message : err.message ? err.message : errMsg,
error: (
(err.error && err.error.error && err.error.error.error && typeof err.error.error.error === 'string') ? err.error.error.error :
(err.error && err.error.error && typeof err.error.error === 'string') ? err.error.error :
(err.error && typeof err.error === 'string') ? err.error :
(err.error && typeof err.error === 'object') ? JSON.stringify(err.error) :
(typeof err === 'string') ? err : 'Unknown Error'
(err.error && err.error.error && err.error.error.message && typeof err.error.error.message === 'string') ? err.error.error.message :
(err.error && err.error.message && typeof err.error.message === 'string') ? err.error.message :
(err.message && typeof err.message === 'string') ? err.message :
(err.error) ? err.error : (typeof err === 'string') ? err : 'Unknown Error'
)
};
return newErrorObj;

@ -25,7 +25,7 @@
<ng-template matStepLabel>{{inputFormLabel}}</ng-template>
<div fxLayout="column" fxLayout.gt-sm="row wrap" fxFlex="100" fxLayoutAlign="space-between stretch">
<mat-form-field fxFlex="48">
<input autoFocus matInput (change)="filterActiveChannels()" placeholder="Amount" type="number" [step]="100" tabindex="1" formControlName="rebalanceAmount" required>
<input autoFocus matInput placeholder="Amount" type="number" [step]="100" tabindex="1" formControlName="rebalanceAmount" required>
<mat-hint>(Local Bal: {{selChannel?.local_balance}}, Remaining: {{selChannel?.local_balance - ((inputFormGroup.controls.rebalanceAmount.value) ? inputFormGroup.controls.rebalanceAmount.value : 0)}})</mat-hint>
<span matSuffix>Sats</span>
<mat-error *ngIf="inputFormGroup.controls.rebalanceAmount.errors?.required">Amount is required.</mat-error>
@ -33,12 +33,12 @@
<mat-error *ngIf="inputFormGroup.controls.rebalanceAmount.errors?.max">Amount must be less than or equal to {{selChannel?.local_balance}}.</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48" fxLayoutAlign="start end">
<mat-select tabindex="2" formControlName="selRebalancePeer" placeholder="Receive from Peer" required>
<mat-option *ngFor="let activeChannel of filteredActiveChannels" [value]="activeChannel">
{{activeChannel.remote_alias || activeChannel.chan_id}}
</mat-option>
</mat-select>
<input type="text" placeholder="Receive from Peer" aria-label="Receive from Peer" matInput formControlName="selRebalancePeer" (change)="onSelectedPeerChanged()" [matAutocomplete]="auto" tabindex="2" required>
<mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn" (optionSelected)="onSelectedPeerChanged()">
<mat-option *ngFor="let activeChannel of filteredActiveChannels | async" [value]="activeChannel">{{activeChannel.remote_alias || activeChannel.chan_id}}</mat-option>
</mat-autocomplete>
<mat-error *ngIf="inputFormGroup.controls.selRebalancePeer.errors?.required">Peer is required.</mat-error>
<mat-error *ngIf="inputFormGroup.controls.selRebalancePeer.errors?.notfound">Peer not found in the list.</mat-error>
</mat-form-field>
</div>
<div class="mt-2" fxLayout="row" fxLayoutAlign="start center" fxFlex="100">

@ -32,7 +32,7 @@ describe('ChannelRebalanceComponent', () => {
providers: [
{ provide: LoggerService, useClass: mockLoggerService },
{ provide: MatDialogRef, useClass: mockMatDialogRef },
{ provide: MAT_DIALOG_DATA, useValue: { channel: {} } }
{ provide: MAT_DIALOG_DATA, useValue: { message: { selChannel: {}, channels: [] } } }
]
}).
compileComponents();

@ -3,13 +3,13 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { DecimalPipe } from '@angular/common';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { MatStepper } from '@angular/material/stepper';
import { Subject } from 'rxjs';
import { takeUntil, filter } from 'rxjs/operators';
import { Subject, Observable, of } from 'rxjs';
import { takeUntil, filter, startWith, map } from 'rxjs/operators';
import { Actions } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { faInfoCircle } from '@fortawesome/free-solid-svg-icons';
import { ChannelInformation } from '../../../../shared/models/alertData';
import { ChannelRebalanceAlert } from '../../../../shared/models/alertData';
import { LoggerService } from '../../../../shared/services/logger.service';
import { Channel, QueryRoutes, ListInvoices } from '../../../../shared/models/lndModels';
import { FEE_LIMIT_TYPES, PAGE_SIZE, UI_MESSAGES } from '../../../../shared/services/consts-enums-functions';
@ -29,7 +29,7 @@ export class ChannelRebalanceComponent implements OnInit, OnDestroy {
public invoices: ListInvoices = {};
public selChannel: Channel = {};
public activeChannels = [];
public filteredActiveChannels = [];
public filteredActiveChannels: Observable<Channel[]>;
public feeLimitTypes = [];
public queryRoute: QueryRoutes = {};
public paymentRequest = '';
@ -45,10 +45,18 @@ export class ChannelRebalanceComponent implements OnInit, OnDestroy {
statusFormGroup: FormGroup;
private unSubs: Array<Subject<void>> = [new Subject(), new Subject(), new Subject(), new Subject()];
constructor(public dialogRef: MatDialogRef<ChannelRebalanceComponent>, @Inject(MAT_DIALOG_DATA) public data: ChannelInformation, private logger: LoggerService, private store: Store<fromRTLReducer.RTLState>, private actions: Actions, private formBuilder: FormBuilder, private decimalPipe: DecimalPipe) { }
constructor(public dialogRef: MatDialogRef<ChannelRebalanceComponent>, @Inject(MAT_DIALOG_DATA) public data: ChannelRebalanceAlert, private logger: LoggerService, private store: Store<fromRTLReducer.RTLState>, private actions: Actions, private formBuilder: FormBuilder, private decimalPipe: DecimalPipe) { }
ngOnInit() {
this.selChannel = this.data.channel;
let x = '';
let y = '';
this.selChannel = this.data.message.selChannel;
this.activeChannels = this.data.message.channels.filter((channel) => channel.active && channel.chan_id !== this.selChannel.chan_id && channel.remote_balance > 0);
this.activeChannels = this.activeChannels.sort((c1: Channel, c2: Channel) => {
x = c1.remote_alias ? c1.remote_alias.toLowerCase() : c1.chan_id ? c1.chan_id.toLowerCase() : '';
y = c2.remote_alias ? c2.remote_alias.toLowerCase() : c1.chan_id.toLowerCase();
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
FEE_LIMIT_TYPES.forEach((FEE_LIMIT_TYPE, i) => {
if (i > 0) {
this.feeLimitTypes.push(FEE_LIMIT_TYPE);
@ -70,7 +78,6 @@ export class ChannelRebalanceComponent implements OnInit, OnDestroy {
this.store.select('lnd').
pipe(takeUntil(this.unSubs[0])).
subscribe((rtlStore) => {
this.activeChannels = rtlStore.allChannels.filter((channel) => channel.active && channel.remote_balance >= this.inputFormGroup.controls.rebalanceAmount.value && channel.chan_id !== this.selChannel.chan_id);
this.invoices = rtlStore.invoices;
this.logger.info(rtlStore);
});
@ -93,10 +100,27 @@ export class ChannelRebalanceComponent implements OnInit, OnDestroy {
this.sendPayment(action.payload.paymentRequest);
}
});
this.inputFormGroup.get('rebalanceAmount').valueChanges.pipe(
takeUntil(this.unSubs[2]), startWith(0)).
subscribe((amount) => {
this.inputFormGroup.controls.selRebalancePeer.setValue('');
this.inputFormGroup.controls.selRebalancePeer.setErrors(null);
this.filteredActiveChannels = of(amount ? this.filterActiveChannels() : this.activeChannels.slice());
});
this.inputFormGroup.get('selRebalancePeer').valueChanges.pipe(
takeUntil(this.unSubs[3]), startWith('')).
subscribe((alias) => {
if (typeof alias === 'string') {
this.filteredActiveChannels = of(this.filterActiveChannels());
}
});
}
onEstimateFee(): boolean|void {
if (!this.inputFormGroup.controls.selRebalancePeer.value || !this.inputFormGroup.controls.rebalanceAmount.value) {
if (this.inputFormGroup.controls.selRebalancePeer.value && typeof this.inputFormGroup.controls.selRebalancePeer.value === 'string') {
this.onSelectedPeerChanged();
}
if (!this.inputFormGroup.controls.selRebalancePeer.value || typeof this.inputFormGroup.controls.selRebalancePeer.value === 'string' || !this.inputFormGroup.controls.rebalanceAmount.value) {
return true;
}
if (this.stepper.selectedIndex === 0) {
@ -193,7 +217,26 @@ export class ChannelRebalanceComponent implements OnInit, OnDestroy {
}
filterActiveChannels() {
this.filteredActiveChannels = this.activeChannels.filter((channel) => channel.remote_balance >= this.inputFormGroup.controls.rebalanceAmount.value && channel.chan_id !== this.selChannel.chan_id);
return this.activeChannels.filter((channel) => channel.remote_balance >= this.inputFormGroup.controls.rebalanceAmount.value &&
channel.chan_id !== this.selChannel.chan_id && ((channel.remote_alias.toLowerCase().indexOf(this.inputFormGroup.controls.selRebalancePeer.value ? this.inputFormGroup.controls.selRebalancePeer.value.toLowerCase() : '') === 0) || (channel.chan_id.toLowerCase().indexOf(this.inputFormGroup.controls.selRebalancePeer.value ? this.inputFormGroup.controls.selRebalancePeer.value.toLowerCase() : '') === 0)));
}
onSelectedPeerChanged() {
if (this.inputFormGroup.controls.selRebalancePeer.value && this.inputFormGroup.controls.selRebalancePeer.value.length > 0) {
if (typeof this.inputFormGroup.controls.selRebalancePeer.value === 'string') {
const foundChannels = this.activeChannels.filter((channel) => channel.remote_alias.length === this.inputFormGroup.controls.selRebalancePeer.value.length && channel.remote_alias.toLowerCase().indexOf(this.inputFormGroup.controls.selRebalancePeer.value ? this.inputFormGroup.controls.selRebalancePeer.value.toLowerCase() : '') === 0);
if (foundChannels && foundChannels.length > 0) {
this.inputFormGroup.controls.selRebalancePeer.setValue(foundChannels[0]);
this.inputFormGroup.controls.selRebalancePeer.setErrors(null);
} else {
this.inputFormGroup.controls.selRebalancePeer.setErrors({ notfound: true });
}
}
}
}
displayFn(channel: Channel): string {
return (channel && channel.remote_alias) ? channel.remote_alias : (channel && channel.chan_id) ? channel.chan_id : '';
}
onClose() {

@ -133,8 +133,12 @@ export class ChannelOpenTableComponent implements OnInit, AfterViewInit, OnDestr
}
onCircularRebalance(selChannel: any) {
const channelsToRebalanceMessage = {
channels: this.channelsData,
selChannel: selChannel
};
this.store.dispatch(new RTLActions.OpenAlert({ data: {
channel: selChannel,
message: channelsToRebalanceMessage,
component: ChannelRebalanceComponent
} }));
}

@ -47,6 +47,13 @@ export interface CLOnChainSendFunds {
component?: any;
}
export interface ChannelRebalanceAlert {
alertTitle?: string;
titleMessage?: string;
message?: { channels?: Channel[], selChannel?: Channel };
component?: any;
}
export interface OpenChannelAlert {
alertTitle?: string;
titleMessage?: string;
@ -194,7 +201,7 @@ export interface DialogConfig {
width?: string;
maxWidth?: string;
minHeight?: string;
data: AlertData | ConfirmationData | ErrorData | OpenChannelAlert | CLOpenChannelAlert | InvoiceInformation |
data: AlertData | ConfirmationData | ErrorData | ChannelRebalanceAlert | OpenChannelAlert | CLOpenChannelAlert | InvoiceInformation |
CLInvoiceInformation | ECLInvoiceInformation | ECLPaymentInformation | ChannelInformation | CLChannelInformation |
PendingOpenChannelInformation | OnChainAddressInformation | ShowPubkeyData | LoopAlert | SwapAlert | AuthConfig |
OnChainLabelUTXO | OnChainSendFunds | CLOnChainSendFunds | ECLChannelInformation | ECLOpenChannelAlert;

@ -9,7 +9,8 @@ $blue-primary: mat.define-palette(mat.$blue-palette, 700, 200, A200);
$blue-accent: mat.define-palette(mat.$gray-palette, 800, 600, 900);
$blue-accent-night: mat.define-palette($mat-white, 300, 600, 900);
$blue-warn: mat.define-palette($red-warn, 500);
$blue-warn-night: mat.define-palette($red-warn, A700);
$blue-night-theme: create-dark-bright-theme($blue-primary, $blue-accent-night, $blue-warn);
$blue-night-theme: create-dark-bright-theme($blue-primary, $blue-accent-night, $blue-warn-night);
$blue-day-theme: mat.define-light-theme($blue-primary, $blue-accent, $blue-warn);

@ -10,7 +10,8 @@ $green-primary: mat.define-palette($green-primary, 500, 300, A200);
$green-accent: mat.define-palette(mat.$gray-palette, 800, 600, 900);
$green-accent-night: mat.define-palette($mat-white, 300, 600, 900);
$green-warn: mat.define-palette($red-warn, 500);
$green-warn-night: mat.define-palette($red-warn, A700);
$green-night-theme: create-dark-bright-theme($green-primary, $green-accent-night, $green-warn);
$green-night-theme: create-dark-bright-theme($green-primary, $green-accent-night, $green-warn-night);
$green-day-theme: mat.define-light-theme($green-primary, $green-accent, $green-warn);

@ -9,7 +9,8 @@ $indigo-primary: mat.define-palette(mat.$indigo-palette, 500, 200, A200);
$indigo-accent: mat.define-palette(mat.$gray-palette, 800, 600, 900);
$indigo-accent-night: mat.define-palette($mat-white, 300, 600, 900);
$indigo-warn: mat.define-palette($red-warn, 500);
$indigo-warn-night: mat.define-palette($red-warn, A700);
$indigo-night-theme: create-dark-bright-theme($indigo-primary, $indigo-accent-night, $indigo-warn);
$indigo-night-theme: create-dark-bright-theme($indigo-primary, $indigo-accent-night, $indigo-warn-night);
$indigo-day-theme: mat.define-light-theme($indigo-primary, $indigo-accent, $indigo-warn);

@ -9,7 +9,8 @@ $pink-primary: mat.define-palette(mat.$pink-palette, 500, 300, A200);
$pink-accent: mat.define-palette(mat.$gray-palette, 800, 600, 900);
$pink-accent-night: mat.define-palette($mat-white, 300, 600, 900);
$pink-warn: mat.define-palette($red-warn, 500);
$pink-warn-night: mat.define-palette($red-warn, A700);
$pink-night-theme: create-dark-bright-theme($pink-primary, $pink-accent-night, $pink-warn);
$pink-night-theme: create-dark-bright-theme($pink-primary, $pink-accent-night, $pink-warn-night);
$pink-day-theme: mat.define-light-theme($pink-primary, $pink-accent, $pink-warn);

@ -7,10 +7,11 @@
@import '~@angular/material/theming';
$purple-primary: mat.define-palette($purple-primary, 500, 300, A200);
$purple-accent: mat.define-palette(mat.$gray-palette, 800, 600, 900);
$purple-accent-night: mat.define-palette($mat-white, 300, 600, 900);
$purple-warn: mat.define-palette($red-warn, 500);
$purple-accent: mat.define-palette(mat.$gray-palette, 800, 600, 900);
$purple-accent-night: mat.define-palette($mat-white, 300, 600, 900);
$purple-warn: mat.define-palette($red-warn, 500);
$purple-warn-night: mat.define-palette($red-warn, A700);
$purple-night-theme: create-dark-bright-theme($purple-primary, $purple-accent-night, $purple-warn);
$purple-night-theme: create-dark-bright-theme($purple-primary, $purple-accent-night, $purple-warn-night);
$purple-day-theme: mat.define-light-theme($purple-primary, $purple-accent, $purple-warn);

@ -9,7 +9,8 @@ $teal-primary: mat.define-palette(mat.$teal-palette, 800, 300, A200);
$teal-accent: mat.define-palette(mat.$gray-palette, 800, 600, 900);
$teal-accent-night: mat.define-palette($mat-white, 300, 600, 900);
$teal-warn: mat.define-palette($red-warn, 500);
$teal-warn-night: mat.define-palette($red-warn, A700);
$teal-night-theme: create-dark-bright-theme($teal-primary, $teal-accent-night, $teal-warn);
$teal-night-theme: create-dark-bright-theme($teal-primary, $teal-accent-night, $teal-warn-night);
$teal-day-theme: mat.define-light-theme($teal-primary, $teal-accent, $teal-warn);

@ -10,7 +10,8 @@ $yellow-primary: mat.define-palette($yellow-primary, 500, 300, A200);
$yellow-accent: mat.define-palette(mat.$gray-palette, 800, 600, 900);
$yellow-accent-night: mat.define-palette($mat-white, 300, 600, 900);
$yellow-warn: mat.define-palette($red-warn, 500);
$yellow-warn-night: mat.define-palette($red-warn, A700);
$yellow-night-theme: create-dark-bright-theme($yellow-primary, $yellow-accent-night, $yellow-warn);
$yellow-night-theme: create-dark-bright-theme($yellow-primary, $yellow-accent-night, $yellow-warn-night);
$yellow-day-theme: mat.define-light-theme($yellow-primary, $yellow-accent, $yellow-warn);

@ -76,7 +76,18 @@
cursor: pointer;
fill: $primary-darker;
}
.mat-tree-node:hover, .mat-nested-tree-node-parent:hover, .mat-select-panel .mat-option:hover, .mat-menu-panel .mat-menu-content .mat-menu-item:hover {
.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled),
.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover),
.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {
color: $primary-darker;
}
.mat-tree-node:hover, .mat-nested-tree-node-parent:hover, .mat-select-panel .mat-option:hover, .mat-menu-panel .mat-menu-content .mat-menu-item:hover,
.mat-autocomplete-panel .mat-option.mat-active,
.mat-autocomplete-panel .mat-option.mat-selected.mat-active,
.mat-autocomplete-panel .mat-option:hover:not(.mat-option-disabled),
.mat-autocomplete-panel .mat-option:focus:not(.mat-option-disabled) {
color: $primary-darker;
cursor: pointer;
background: $hover-background-dark;

Loading…
Cancel
Save