mtas-tv-frontend/src/app/shared/service/settings.service.ts
Dávid Danyi 0f535881a4 * angular2 version uplift
* configurable kanban board added
* iframe slide type added
* many to many implementation of team-slide connection
2018-09-05 17:03:21 +02:00

54 lines
1.3 KiB
TypeScript
Executable File

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<Team> = new Subject<Team>();
private intervalSubject: Subject<number> = new Subject<number>();
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<number> {
return this.intervalSubject.asObservable();
}
get teamChanged(): Observable<Team> {
return this.teamSubject.asObservable();
}
}