import { Injectable } from '@angular/core'; import { Observable, Subject } from 'rxjs'; import { Team } from '../team'; const DEFAULT_SLIDE_INTERVAL = 30000; const SLIDE_INTERVAL_KEY = 'slide_interval'; const SELECTED_TEAM_KEY = 'team'; @Injectable() export class SettingsService { private teamSubject: Subject = new Subject(); private intervalSubject: Subject = new Subject(); constructor() {} get team(): Team { try { const team = JSON.parse(localStorage.getItem(SELECTED_TEAM_KEY)); return team !== null ? team : new Team; } catch (e) { return new Team; } } set team(team: Team) { localStorage.setItem(SELECTED_TEAM_KEY, JSON.stringify(team)); this.teamSubject.next(team); } get slideInterval(): number { try { const interval = JSON.parse(localStorage.getItem(SLIDE_INTERVAL_KEY)); return interval !== null ? interval : DEFAULT_SLIDE_INTERVAL; } catch (e) { return DEFAULT_SLIDE_INTERVAL; } } set slideInterval(interval: number) { localStorage.setItem(SLIDE_INTERVAL_KEY, JSON.stringify(interval)); this.intervalSubject.next(interval); } get slideIntervalChanged(): Observable { return this.intervalSubject.asObservable(); } get teamChanged(): Observable { return this.teamSubject.asObservable(); } }