Skip to content

Commit 13967e6

Browse files
committed
TT-52 feat: consider global toggle state
1 parent e489731 commit 13967e6

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/app/modules/shared/feature-toggles/feature-toggle-manager.service.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ describe('FeatureToggleManager', () => {
6262
);
6363
getFeatureToggleSpy = spyOn(fakeFeatureToggleProvider, 'getFeatureToggle').and.returnValue(of(aToggleWithFilters));
6464
service = new FeatureManagerService(fakeFeatureToggleProvider);
65+
spyOn(service, 'isToggleEnabled').and.returnValue(of(true));
6566
});
6667

6768
it('manager uses feature provider to build feature toggle model', async () => {

src/app/modules/shared/feature-toggles/feature-toggle-manager.service.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Injectable } from '@angular/core';
2-
import { Observable } from 'rxjs';
2+
import { Observable, zip } from 'rxjs';
33
import { map } from 'rxjs/operators';
44
import { FeatureToggleProvider } from './feature-toggle-provider.service';
55

@@ -18,10 +18,21 @@ export class FeatureManagerService {
1818
}
1919

2020
public isToggleEnabledForUser(toggleName: string, toggleLabel?: string): Observable<boolean> {
21-
return this.featureToggleProvider.getFeatureToggle(toggleName, toggleLabel).pipe(
21+
const matchesFilters$: Observable<boolean> = this.featureToggleProvider
22+
.getFeatureToggle(toggleName, toggleLabel)
23+
.pipe(
2224
map(featureToggle => featureToggle.filters),
2325
map(filters => filters.map(filter => filter.evaluate())),
2426
map(filterEvaluations => filterEvaluations.includes(true))
2527
);
28+
29+
const result$: Observable<boolean> = zip(
30+
this.isToggleEnabled(toggleName, toggleLabel),
31+
matchesFilters$
32+
).pipe(
33+
map(([enabled, enabledForUser]) => enabled && enabledForUser)
34+
);
35+
36+
return result$;
2637
}
2738
}

0 commit comments

Comments
 (0)