import type { Ref } from 'vue' import { userSettings } from '.' export interface FeatureFlags { experimentalVirtualScroller: boolean experimentalGitHubCards: boolean experimentalUserPicker: boolean } export type FeatureFlagsMap = Record const DEFAULT_FEATURE_FLAGS: FeatureFlags = { experimentalVirtualScroller: true, experimentalGitHubCards: true, experimentalUserPicker: true, } export function useFeatureFlag(name: T): Ref { return computed({ get() { return getFeatureFlag(name) }, set(value) { if (userSettings.value) userSettings.value.featureFlags[name] = value }, }) } export function getFeatureFlag(name: T): FeatureFlags[T] { return userSettings.value?.featureFlags?.[name] ?? DEFAULT_FEATURE_FLAGS[name] } export function toggleFeatureFlag(key: keyof FeatureFlags) { const flag = useFeatureFlag(key) flag.value = !flag.value }