From 4afbd15a38995d3ddaf62eacc667cddef5a7e58f Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 26 Mar 2021 01:46:15 +0300 Subject: [PATCH 1/2] add getFeatures method to config-state --- .../core/src/lib/services/config-state.service.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/npm/ng-packs/packages/core/src/lib/services/config-state.service.ts b/npm/ng-packs/packages/core/src/lib/services/config-state.service.ts index 70365e0593..0ab66059a8 100644 --- a/npm/ng-packs/packages/core/src/lib/services/config-state.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/config-state.service.ts @@ -72,6 +72,21 @@ export class ConfigStateService { return this.store.sliceState(state => state.features?.values?.[key]); } + getFeatures(keys: string[]) { + const { features } = this.store.state; + if (!features) return; + + return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {}); + } + + getFeatures$(keys: string[]) { + return this.store.sliceState(({ features }) => { + if (!features?.values) return; + + return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {}); + }); + } + getSetting(key: string) { return this.store.state.setting?.values?.[key]; } From 8d87ac8b0010a0bc297c108ab35f3325f3e33aac Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 26 Mar 2021 01:46:25 +0300 Subject: [PATCH 2/2] add featuresFactory --- .../packages/core/src/lib/utils/factory-utils.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/npm/ng-packs/packages/core/src/lib/utils/factory-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/factory-utils.ts index bc6273fa82..c9542f3dba 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/factory-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/factory-utils.ts @@ -7,6 +7,8 @@ import { StaticProvider, Type, } from '@angular/core'; +import { filter, map } from 'rxjs/operators'; +import { ConfigStateService } from '../services/config-state.service'; export class LazyModuleFactory extends NgModuleFactory { get moduleType(): Type { @@ -29,3 +31,11 @@ export class LazyModuleFactory extends NgModuleFactory { return factory.create(injector); } } + +export function featuresFactory( + configState: ConfigStateService, + featureKeys: string[], + mapFn: (features) => any = features => features, +) { + return configState.getFeatures$(featureKeys).pipe(filter(Boolean), map(mapFn)); +}