[menu] fix json.parse on missing auth in localstorage

This commit is contained in:
nymkappa 2023-08-20 08:11:55 +02:00
parent c4f2f4ca66
commit b64b6fb3c7
No known key found for this signature in database
GPG Key ID: E155910B16E8BD04
4 changed files with 23 additions and 9 deletions

View File

@ -5,6 +5,7 @@ import { LanguageService } from '../../services/language.service';
import { EnterpriseService } from '../../services/enterprise.service';
import { NavigationService } from '../../services/navigation.service';
import { MenuComponent } from '../menu/menu.component';
import { StorageService } from '../../services/storage.service';
@Component({
selector: 'app-master-page',
@ -37,6 +38,7 @@ export class MasterPageComponent implements OnInit {
private languageService: LanguageService,
private enterpriseService: EnterpriseService,
private navigationService: NavigationService,
private storageService: StorageService
) { }
ngOnInit(): void {
@ -74,12 +76,12 @@ export class MasterPageComponent implements OnInit {
this.stateService.resetScroll$.next(true);
}
onLoggedOut() {
onLoggedOut(): void {
this.refreshAuth();
}
refreshAuth(): void {
this.userAuth = JSON.parse(localStorage.getItem('auth') || '') ?? null;
this.userAuth = this.storageService.getAuth();
}
hamburgerClick(): void {

View File

@ -2,6 +2,7 @@ import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from '../../services/api.service';
import { MenuGroup } from '../../interfaces/services.interface';
import { StorageService } from '../../services/storage.service';
@Component({
selector: 'app-menu',
@ -16,11 +17,12 @@ export class MenuComponent implements OnInit {
@Output() loggedOut = new EventEmitter<boolean>();
constructor(
private apiService: ApiService
private apiService: ApiService,
private storageService: StorageService
) {}
ngOnInit(): void {
this.userAuth = JSON.parse(localStorage.getItem('auth') || '') ?? null;
this.userAuth = this.storageService.getAuth();
this.userMenuGroups$ = this.apiService.getUserMenuGroups$();
}

View File

@ -8,6 +8,7 @@ import { WebsocketResponse } from '../interfaces/websocket.interface';
import { Outspend, Transaction } from '../interfaces/electrs.interface';
import { Conversion } from './price.service';
import { MenuGroup } from '../interfaces/services.interface';
import { StorageService } from './storage.service';
// Todo - move to config.json
const SERVICES_API_PREFIX = `/api/v1/services`;
@ -22,6 +23,7 @@ export class ApiService {
constructor(
private httpClient: HttpClient,
private stateService: StateService,
private storageService: StorageService
) {
this.apiBaseUrl = ''; // use relative URL by default
if (!stateService.isBrowser) { // except when inside AU SSR process
@ -336,7 +338,7 @@ export class ApiService {
/**
* Services
*/
getNodeOwner$(publicKey: string): Observable<any> {
let params = new HttpParams()
.set('node_public_key', publicKey);
@ -344,7 +346,7 @@ export class ApiService {
}
getUserMenuGroups$(): Observable<MenuGroup[]> {
const auth = JSON.parse(localStorage.getItem('auth') || '');
const auth = this.storageService.getAuth();
if (!auth) {
return of(null);
}
@ -354,10 +356,10 @@ export class ApiService {
});
}
logout$() {
const auth = JSON.parse(localStorage.getItem('auth') || '');
logout$(): Observable<any> {
const auth = this.storageService.getAuth();
if (!auth) {
return;
return of(null);
}
localStorage.setItem('auth', null);

View File

@ -56,4 +56,12 @@ export class StorageService {
console.log(e);
}
}
getAuth(): any | null {
try {
return JSON.parse(localStorage.getItem('auth'));
} catch(e) {
return null;
}
}
}