diff --git a/frontend/.vscode/settings.json b/frontend/.vscode/settings.json index a97dbcf2a..e5ba8997f 100644 --- a/frontend/.vscode/settings.json +++ b/frontend/.vscode/settings.json @@ -1,17 +1,19 @@ { "conventionalCommits.scopes": [ + "DashboardChartSummaryChartFilter", + "DashboardGroupManagementModal", + "DashboardValidatorManagmentModal", "checkout", "ci", "customFetch", - "DashboardChartSummaryChartFilter", - "DashboardGroupManagementModal", "eslint", + "feature-flags", "git", "i18n", "mainHeader", + "notifications", "qrCode", - "vscode", - "DashboardValidatorManagmentModal" + "vscode" ], "editor.codeActionsOnSave": { "source.fixAll.eslint": "always" diff --git a/frontend/components/BcFeatureFlag.vue b/frontend/components/BcFeatureFlag.vue index 53c6c6673..5d69eb435 100644 --- a/frontend/components/BcFeatureFlag.vue +++ b/frontend/components/BcFeatureFlag.vue @@ -1,35 +1,14 @@ diff --git a/frontend/composables/useFeatureFlag.ts b/frontend/composables/useFeatureFlag.ts new file mode 100644 index 000000000..6307dfaf2 --- /dev/null +++ b/frontend/composables/useFeatureFlag.ts @@ -0,0 +1,33 @@ +import { warn } from 'vue' +import type { FeatureFlag } from '~/types/feature-flags' + +export const useFeatureFlag = () => { + type Environment = 'development' | 'production' | 'staging' + + const currentEnvironment = useRuntimeConfig().public.deploymentType as Environment + if (!currentEnvironment) { + warn('Environment variable `deploymentType` is not set.') + } + + const staging: FeatureFlag[] = [ 'feature-notifications' ] + const development: FeatureFlag[] + = [ + ...staging, + 'feature-account_dashboards', + 'feature-user_settings', + ] + const featureCatalog: Record = { + development, + production: [], + staging, + } + + const activeFeatures = featureCatalog[currentEnvironment] + + const has = (feature: FeatureFlag) => activeFeatures.includes(feature) + + return { + activeFeatures, + has, + } +} diff --git a/frontend/types/feature-flags.ts b/frontend/types/feature-flags.ts new file mode 100644 index 000000000..90c2d8d4f --- /dev/null +++ b/frontend/types/feature-flags.ts @@ -0,0 +1,6 @@ +export type FeatureFlag = (typeof FEATURE_FLAGS)[number] +const FEATURE_FLAGS = [ + 'feature-account_dashboards', + 'feature-notifications', + 'feature-user_settings', +] as const