import { Injectable } from '@angular/core'; import { Router, ActivatedRoute } from '@angular/router'; @Injectable({ providedIn: 'root' }) export class StorageService { constructor(private router: Router, private route: ActivatedRoute) { this.setDefaultValueIfNeeded('graphWindowPreference', '2h'); this.setDefaultValueIfNeeded('miningWindowPreference', '1w'); } setDefaultValueIfNeeded(key: string, defaultValue: string) { const graphWindowPreference: string = this.getValue(key); const fragment = window.location.hash.replace('#', ''); if (graphWindowPreference === null) { // First visit to mempool.space if (window.location.pathname.includes('graphs') && key === 'graphWindowPreference' || window.location.pathname.includes('pools') && key === 'miningWindowPreference' ) { this.setValue(key, fragment ? fragment : defaultValue); } else { this.setValue(key, defaultValue); } } else if (window.location.pathname.includes('graphs') && key === 'graphWindowPreference' || window.location.pathname.includes('pools') && key === 'miningWindowPreference' ) { // Visit a different graphs#fragment from last visit if (fragment !== null && graphWindowPreference !== fragment) { this.setValue(key, fragment); } } } getValue(key: string): string { try { return localStorage.getItem(key); } catch (e) { console.log(e); return ''; } } setValue(key: string, value: any): void { try { localStorage.setItem(key, value); } catch (e) { console.log(e); } } removeItem(key: string): void { try { localStorage.removeItem(key); } catch (e) { console.log(e); } } }