From e64fc519b88a537946676108aaaf04ebd704ed2b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 28 Oct 2020 16:49:09 +0100 Subject: [PATCH] core-api: remove FeatureFlagName type --- docs/reference/createPlugin-feature-flags.md | 2 +- .../src/apis/definitions/FeatureFlagsApi.ts | 3 +-- packages/core-api/src/app/FeatureFlags.tsx | 13 ++++++------- packages/core-api/src/plugin/types.ts | 6 ++---- .../src/components/FeatureFlags/FeatureFlags.tsx | 7 +++---- 5 files changed, 13 insertions(+), 18 deletions(-) diff --git a/docs/reference/createPlugin-feature-flags.md b/docs/reference/createPlugin-feature-flags.md index ebb8a6b503..097294e55f 100644 --- a/docs/reference/createPlugin-feature-flags.md +++ b/docs/reference/createPlugin-feature-flags.md @@ -10,7 +10,7 @@ can use this to split out logic in your code for manual A/B testing, etc. ```typescript export type FeatureFlagsHooks = { - register(name: FeatureFlagName): void; + register(name: string): void; }; ``` diff --git a/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts b/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts index 6e8c8cd8fc..26620aea29 100644 --- a/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts +++ b/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts @@ -16,7 +16,6 @@ import { ApiRef, createApiRef } from '../system'; import { UserFlags, FeatureFlagsRegistry } from '../../app/FeatureFlags'; -import { FeatureFlagName } from '../../plugin'; /** * The feature flags API is used to toggle functionality to users across plugins and Backstage. @@ -54,7 +53,7 @@ export interface FeatureFlagsApi { export interface FeatureFlagsRegistryItem { pluginId: string; - name: FeatureFlagName; + name: string; } export const featureFlagsApiRef: ApiRef = createApiRef({ diff --git a/packages/core-api/src/app/FeatureFlags.tsx b/packages/core-api/src/app/FeatureFlags.tsx index 7a69fa5456..115e46802b 100644 --- a/packages/core-api/src/app/FeatureFlags.tsx +++ b/packages/core-api/src/app/FeatureFlags.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { FeatureFlagName } from '../plugin/types'; import { FeatureFlagState, FeatureFlagsApi, @@ -32,7 +31,7 @@ export function validateBrowserCompat(): void { } } -export function validateFlagName(name: FeatureFlagName): void { +export function validateFlagName(name: string): void { if (name.length < 3) { throw new Error( `The '${name}' feature flag must have a minimum length of three characters.`, @@ -60,7 +59,7 @@ export function validateFlagName(name: FeatureFlagName): void { * can use this to retrieve, add, edit, delete, clear and save the user's * feature flags to the local browser for persisted storage. */ -export class UserFlags extends Map { +export class UserFlags extends Map { static load(): UserFlags { validateBrowserCompat(); @@ -73,18 +72,18 @@ export class UserFlags extends Map { } } - get(name: FeatureFlagName): FeatureFlagState { + get(name: string): FeatureFlagState { return super.get(name) || FeatureFlagState.Off; } - set(name: FeatureFlagName, state: FeatureFlagState): this { + set(name: string, state: FeatureFlagState): this { validateFlagName(name); const output = super.set(name, state); this.save(); return output; } - toggle(name: FeatureFlagName): FeatureFlagState { + toggle(name: string): FeatureFlagState { if (super.get(name) === FeatureFlagState.On) { super.set(name, FeatureFlagState.Off); } else { @@ -93,7 +92,7 @@ export class UserFlags extends Map { return super.get(name) || FeatureFlagState.Off; } - delete(name: FeatureFlagName): boolean { + delete(name: string): boolean { const output = super.delete(name); this.save(); return output; diff --git a/packages/core-api/src/plugin/types.ts b/packages/core-api/src/plugin/types.ts index 76c05f7b04..427d3d539a 100644 --- a/packages/core-api/src/plugin/types.ts +++ b/packages/core-api/src/plugin/types.ts @@ -54,11 +54,9 @@ export type LegacyRedirectRouteOutput = { options?: RouteOptions; }; -export type FeatureFlagName = string; - export type FeatureFlagOutput = { type: 'feature-flag'; - name: FeatureFlagName; + name: string; }; export type PluginOutput = @@ -103,5 +101,5 @@ export type RouterHooks = { }; export type FeatureFlagsHooks = { - register(name: FeatureFlagName): void; + register(name: string): void; }; diff --git a/plugins/user-settings/src/components/FeatureFlags/FeatureFlags.tsx b/plugins/user-settings/src/components/FeatureFlags/FeatureFlags.tsx index e0f4d6f40e..851f427b62 100644 --- a/plugins/user-settings/src/components/FeatureFlags/FeatureFlags.tsx +++ b/plugins/user-settings/src/components/FeatureFlags/FeatureFlags.tsx @@ -16,7 +16,6 @@ import React, { useCallback, useState } from 'react'; import { - FeatureFlagName, featureFlagsApiRef, FeatureFlagsRegistryItem, FeatureFlagState, @@ -37,15 +36,15 @@ export const FeatureFlags = () => { result[featureFlag.name] = state; return result; }, - {} as Record, + {} as Record, ); - const [state, setState] = useState>( + const [state, setState] = useState>( initialFlagState, ); const toggleFlag = useCallback( - (flagName: FeatureFlagName) => { + (flagName: string) => { const newState = featureFlagsApi.getFlags().toggle(flagName); setState(prevState => ({