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

View File

@ -2,6 +2,7 @@ import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { ApiService } from '../../services/api.service'; import { ApiService } from '../../services/api.service';
import { MenuGroup } from '../../interfaces/services.interface'; import { MenuGroup } from '../../interfaces/services.interface';
import { StorageService } from '../../services/storage.service';
@Component({ @Component({
selector: 'app-menu', selector: 'app-menu',
@ -16,11 +17,12 @@ export class MenuComponent implements OnInit {
@Output() loggedOut = new EventEmitter<boolean>(); @Output() loggedOut = new EventEmitter<boolean>();
constructor( constructor(
private apiService: ApiService private apiService: ApiService,
private storageService: StorageService
) {} ) {}
ngOnInit(): void { ngOnInit(): void {
this.userAuth = JSON.parse(localStorage.getItem('auth') || '') ?? null; this.userAuth = this.storageService.getAuth();
this.userMenuGroups$ = this.apiService.getUserMenuGroups$(); 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 { Outspend, Transaction } from '../interfaces/electrs.interface';
import { Conversion } from './price.service'; import { Conversion } from './price.service';
import { MenuGroup } from '../interfaces/services.interface'; import { MenuGroup } from '../interfaces/services.interface';
import { StorageService } from './storage.service';
// Todo - move to config.json // Todo - move to config.json
const SERVICES_API_PREFIX = `/api/v1/services`; const SERVICES_API_PREFIX = `/api/v1/services`;
@ -22,6 +23,7 @@ export class ApiService {
constructor( constructor(
private httpClient: HttpClient, private httpClient: HttpClient,
private stateService: StateService, private stateService: StateService,
private storageService: StorageService
) { ) {
this.apiBaseUrl = ''; // use relative URL by default this.apiBaseUrl = ''; // use relative URL by default
if (!stateService.isBrowser) { // except when inside AU SSR process if (!stateService.isBrowser) { // except when inside AU SSR process
@ -344,7 +346,7 @@ export class ApiService {
} }
getUserMenuGroups$(): Observable<MenuGroup[]> { getUserMenuGroups$(): Observable<MenuGroup[]> {
const auth = JSON.parse(localStorage.getItem('auth') || ''); const auth = this.storageService.getAuth();
if (!auth) { if (!auth) {
return of(null); return of(null);
} }
@ -354,10 +356,10 @@ export class ApiService {
}); });
} }
logout$() { logout$(): Observable<any> {
const auth = JSON.parse(localStorage.getItem('auth') || ''); const auth = this.storageService.getAuth();
if (!auth) { if (!auth) {
return; return of(null);
} }
localStorage.setItem('auth', null); localStorage.setItem('auth', null);

View File

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