]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | import { HttpClient } from '@angular/common/http'; |
2 | import { Injectable } from '@angular/core'; | |
3 | ||
1911f103 | 4 | import { Observable } from 'rxjs'; |
11fdf7f2 | 5 | |
1911f103 | 6 | import { TimerService } from './timer.service'; |
9f95a23c TL |
7 | |
8 | export class FeatureTogglesMap { | |
9 | rbd = true; | |
10 | mirroring = true; | |
11 | iscsi = true; | |
12 | cephfs = true; | |
13 | rgw = true; | |
14 | nfs = true; | |
1e59de90 | 15 | dashboardV3 = true; |
9f95a23c TL |
16 | } |
17 | export type Features = keyof FeatureTogglesMap; | |
11fdf7f2 TL |
18 | export type FeatureTogglesMap$ = Observable<FeatureTogglesMap>; |
19 | ||
20 | @Injectable({ | |
81eedcae | 21 | providedIn: 'root' |
11fdf7f2 TL |
22 | }) |
23 | export class FeatureTogglesService { | |
24 | readonly API_URL: string = 'api/feature_toggles'; | |
9f95a23c | 25 | readonly REFRESH_INTERVAL: number = 30000; |
11fdf7f2 TL |
26 | private featureToggleMap$: FeatureTogglesMap$; |
27 | ||
1911f103 TL |
28 | constructor(private http: HttpClient, private timerService: TimerService) { |
29 | this.featureToggleMap$ = this.timerService.get( | |
30 | () => this.http.get<FeatureTogglesMap>(this.API_URL), | |
31 | this.REFRESH_INTERVAL | |
11fdf7f2 TL |
32 | ); |
33 | } | |
34 | ||
35 | get(): FeatureTogglesMap$ { | |
36 | return this.featureToggleMap$; | |
37 | } | |
38 | } |