diff --git a/libs/common/src/enums/feature-flag.enum.ts b/libs/common/src/enums/feature-flag.enum.ts index e8c58a9ced4..c08c4e7eef4 100644 --- a/libs/common/src/enums/feature-flag.enum.ts +++ b/libs/common/src/enums/feature-flag.enum.ts @@ -1,3 +1,5 @@ +import { ServerConfig } from "../platform/abstractions/config/server-config"; + /** * Feature flags. * @@ -109,3 +111,14 @@ export const DefaultFeatureFlagValue = { export type DefaultFeatureFlagValueType = typeof DefaultFeatureFlagValue; export type FeatureFlagValueType = DefaultFeatureFlagValueType[Flag]; + +export function getFeatureFlagValue( + serverConfig: ServerConfig | null, + flag: Flag, +) { + if (serverConfig?.featureStates == null || serverConfig.featureStates[flag] == null) { + return DefaultFeatureFlagValue[flag]; + } + + return serverConfig.featureStates[flag] as FeatureFlagValueType; +} diff --git a/libs/common/src/platform/services/config/default-config.service.ts b/libs/common/src/platform/services/config/default-config.service.ts index cc52a5b8dad..33f86d30885 100644 --- a/libs/common/src/platform/services/config/default-config.service.ts +++ b/libs/common/src/platform/services/config/default-config.service.ts @@ -17,11 +17,7 @@ import { SemVer } from "semver"; import { AuthService } from "../../../auth/abstractions/auth.service"; import { AuthenticationStatus } from "../../../auth/enums/authentication-status"; -import { - DefaultFeatureFlagValue, - FeatureFlag, - FeatureFlagValueType, -} from "../../../enums/feature-flag.enum"; +import { FeatureFlag, getFeatureFlagValue } from "../../../enums/feature-flag.enum"; import { UserId } from "../../../types/guid"; import { ConfigApiServiceAbstraction } from "../../abstractions/config/config-api.service.abstraction"; import { ConfigService } from "../../abstractions/config/config.service"; @@ -123,26 +119,13 @@ export class DefaultConfigService implements ConfigService { } getFeatureFlag$(key: Flag) { - return this.serverConfig$.pipe( - map((serverConfig) => this.getFeatureFlagValue(serverConfig, key)), - ); - } - - private getFeatureFlagValue( - serverConfig: ServerConfig | null, - flag: Flag, - ) { - if (serverConfig?.featureStates == null || serverConfig.featureStates[flag] == null) { - return DefaultFeatureFlagValue[flag]; - } - - return serverConfig.featureStates[flag] as FeatureFlagValueType; + return this.serverConfig$.pipe(map((serverConfig) => getFeatureFlagValue(serverConfig, key))); } userCachedFeatureFlag$(key: Flag, userId: UserId) { return this.stateProvider .getUser(userId, USER_SERVER_CONFIG) - .state$.pipe(map((config) => this.getFeatureFlagValue(config, key))); + .state$.pipe(map((config) => getFeatureFlagValue(config, key))); } async getFeatureFlag(key: Flag) {