]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/feature-toggles.service.ts
import ceph nautilus 14.2.2
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / services / feature-toggles.service.ts
1 import { HttpClient } from '@angular/common/http';
2 import { Injectable } from '@angular/core';
3
4 import { Observable, timer } from 'rxjs';
5 import { flatMap, shareReplay } from 'rxjs/operators';
6
7 export type FeatureTogglesMap = Map<string, boolean>;
8 export type FeatureTogglesMap$ = Observable<FeatureTogglesMap>;
9
10 @Injectable({
11 providedIn: 'root'
12 })
13 export class FeatureTogglesService {
14 readonly API_URL: string = 'api/feature_toggles';
15 readonly REFRESH_INTERVAL: number = 20000;
16 private featureToggleMap$: FeatureTogglesMap$;
17
18 constructor(private http: HttpClient) {
19 this.featureToggleMap$ = timer(0, this.REFRESH_INTERVAL).pipe(
20 flatMap(() => this.http.get<FeatureTogglesMap>(this.API_URL)),
21 shareReplay(1)
22 );
23 }
24
25 get(): FeatureTogglesMap$ {
26 return this.featureToggleMap$;
27 }
28 }