diff --git a/frontend/src/app/components/about/about.component.html b/frontend/src/app/components/about/about.component.html
index d5c82b784..5220e496e 100644
--- a/frontend/src/app/components/about/about.component.html
+++ b/frontend/src/app/components/about/about.component.html
@@ -4,7 +4,8 @@
®
diff --git a/frontend/src/app/components/fiat-selector/fiat-selector.component.html b/frontend/src/app/components/fiat-selector/fiat-selector.component.html
index eec6f4b0a..94280b969 100644
--- a/frontend/src/app/components/fiat-selector/fiat-selector.component.html
+++ b/frontend/src/app/components/fiat-selector/fiat-selector.component.html
@@ -1,5 +1,5 @@
-
diff --git a/frontend/src/app/components/language-selector/language-selector.component.html b/frontend/src/app/components/language-selector/language-selector.component.html
index 41e0efb0e..bfd36af77 100644
--- a/frontend/src/app/components/language-selector/language-selector.component.html
+++ b/frontend/src/app/components/language-selector/language-selector.component.html
@@ -1,5 +1,5 @@
-
+
diff --git a/frontend/src/app/components/menu/menu.component.html b/frontend/src/app/components/menu/menu.component.html
index c5f8040fd..d901eb0ec 100644
--- a/frontend/src/app/components/menu/menu.component.html
+++ b/frontend/src/app/components/menu/menu.component.html
@@ -12,7 +12,7 @@
{{ group.title }}
- -
+
-
{{ item.title }}
diff --git a/frontend/src/app/components/menu/menu.component.scss b/frontend/src/app/components/menu/menu.component.scss
index f8f0ab865..ab1dd5e7c 100644
--- a/frontend/src/app/components/menu/menu.component.scss
+++ b/frontend/src/app/components/menu/menu.component.scss
@@ -19,7 +19,7 @@
}
.sidenav.open {
- width: 235px;
+ width: 225px;
}
.sidenav.close {
width: 0px;
diff --git a/frontend/src/app/components/menu/menu.component.ts b/frontend/src/app/components/menu/menu.component.ts
index 0a91eb2ee..70e5b4918 100644
--- a/frontend/src/app/components/menu/menu.component.ts
+++ b/frontend/src/app/components/menu/menu.component.ts
@@ -3,6 +3,7 @@ import { Observable } from 'rxjs';
import { ApiService } from '../../services/api.service';
import { MenuGroup } from '../../interfaces/services.interface';
import { StorageService } from '../../services/storage.service';
+import { Router } from '@angular/router';
@Component({
selector: 'app-menu',
@@ -11,19 +12,29 @@ import { StorageService } from '../../services/storage.service';
})
export class MenuComponent implements OnInit {
+ @Output() loggedOut = new EventEmitter();
+
navOpen: boolean = false;
userMenuGroups$: Observable | undefined;
userAuth: any | undefined;
- @Output() loggedOut = new EventEmitter();
+ isServices = false;
constructor(
private apiService: ApiService,
- private storageService: StorageService
+ private storageService: StorageService,
+ private router: Router
) {}
ngOnInit(): void {
this.userAuth = this.storageService.getAuth();
this.userMenuGroups$ = this.apiService.getUserMenuGroups$();
+
+ this.isServices = this.router.url.includes('/services/');
+ this.navOpen = this.isServices && !this.isSmallScreen();
+ }
+
+ isSmallScreen() {
+ return window.innerWidth <= 767.98;
}
logout(): void {
@@ -31,6 +42,12 @@ export class MenuComponent implements OnInit {
this.loggedOut.emit(true);
}
+ onLinkClick() {
+ if (!this.isServices || this.isSmallScreen()) {
+ this.navOpen = false;
+ }
+ }
+
hambugerClick() {
this.navOpen = !this.navOpen;
}
diff --git a/frontend/src/app/components/rate-unit-selector/rate-unit-selector.component.html b/frontend/src/app/components/rate-unit-selector/rate-unit-selector.component.html
index a2be9df87..7dab6908c 100644
--- a/frontend/src/app/components/rate-unit-selector/rate-unit-selector.component.html
+++ b/frontend/src/app/components/rate-unit-selector/rate-unit-selector.component.html
@@ -1,5 +1,5 @@
-
+
diff --git a/frontend/src/app/services/api.service.ts b/frontend/src/app/services/api.service.ts
index 2b0222d35..0037c8675 100644
--- a/frontend/src/app/services/api.service.ts
+++ b/frontend/src/app/services/api.service.ts
@@ -4,7 +4,7 @@ import { CpfpInfo, OptimizedMempoolStats, AddressInformation, LiquidPegs, ITrans
PoolStat, BlockExtended, TransactionStripped, RewardStats, AuditScore, BlockSizesAndWeights, RbfTree, BlockAudit } from '../interfaces/node-api.interface';
import { Observable, of } from 'rxjs';
import { StateService } from './state.service';
-import { WebsocketResponse } from '../interfaces/websocket.interface';
+import { IBackendInfo, WebsocketResponse } from '../interfaces/websocket.interface';
import { Outspend, Transaction } from '../interfaces/electrs.interface';
import { Conversion } from './price.service';
import { MenuGroup } from '../interfaces/services.interface';
@@ -36,6 +36,10 @@ export class ApiService {
}
this.apiBasePath = network ? '/' + network : '';
});
+
+ this.getServicesBackendInfo$().subscribe(version => {
+ this.stateService.servicesBackendInfo$.next(version);
+ })
}
list2HStatistics$(): Observable {
@@ -367,4 +371,8 @@ export class ApiService {
headers: { 'Authorization': auth.token }
});
}
+
+ getServicesBackendInfo$(): Observable {
+ return this.httpClient.get(`${SERVICES_API_PREFIX}/version`);
+ }
}
diff --git a/frontend/src/app/services/state.service.ts b/frontend/src/app/services/state.service.ts
index 91e4d7475..e8a801374 100644
--- a/frontend/src/app/services/state.service.ts
+++ b/frontend/src/app/services/state.service.ts
@@ -8,6 +8,7 @@ import { isPlatformBrowser } from '@angular/common';
import { filter, map, scan, shareReplay } from 'rxjs/operators';
import { StorageService } from './storage.service';
import { hasTouchScreen } from '../shared/pipes/bytes-pipe/utils';
+import { ApiService } from './api.service';
export interface MarkBlockState {
blockHeight?: number;
@@ -48,6 +49,7 @@ export interface Env {
SIGNET_BLOCK_AUDIT_START_HEIGHT: number;
HISTORICAL_PRICE: boolean;
ACCELERATOR: boolean;
+ SERVICES: boolean;
}
const defaultEnv: Env = {
@@ -79,6 +81,7 @@ const defaultEnv: Env = {
'SIGNET_BLOCK_AUDIT_START_HEIGHT': 0,
'HISTORICAL_PRICE': true,
'ACCELERATOR': false,
+ 'SERVICES': false,
};
@Injectable({
@@ -120,6 +123,7 @@ export class StateService {
vbytesPerSecond$ = new ReplaySubject(1);
previousRetarget$ = new ReplaySubject(1);
backendInfo$ = new ReplaySubject(1);
+ servicesBackendInfo$ = new ReplaySubject(1);
loadingIndicators$ = new ReplaySubject(1);
recommendedFees$ = new ReplaySubject(1);
chainTip$ = new ReplaySubject(-1);
diff --git a/frontend/src/app/shared/components/global-footer/global-footer.component.html b/frontend/src/app/shared/components/global-footer/global-footer.component.html
index 0b9c20387..15106846f 100644
--- a/frontend/src/app/shared/components/global-footer/global-footer.component.html
+++ b/frontend/src/app/shared/components/global-footer/global-footer.component.html
@@ -1,6 +1,7 @@