1 import { HttpClient } from '@angular/common/http';
2 import { Injectable } from '@angular/core';
4 import { Observable, timer } from 'rxjs';
5 import { flatMap, shareReplay } from 'rxjs/operators';
7 export type FeatureTogglesMap = Map<string, boolean>;
8 export type FeatureTogglesMap$ = Observable<FeatureTogglesMap>;
13 export class FeatureTogglesService {
14 readonly API_URL: string = 'api/feature_toggles';
15 readonly REFRESH_INTERVAL: number = 20000;
16 private featureToggleMap$: FeatureTogglesMap$;
18 constructor(private http: HttpClient) {
19 this.featureToggleMap$ = timer(0, this.REFRESH_INTERVAL).pipe(
20 flatMap(() => this.http.get<FeatureTogglesMap>(this.API_URL)),
25 get(): FeatureTogglesMap$ {
26 return this.featureToggleMap$;