1
0
mirror of https://github.com/elk-zone/elk synced 2024-11-27 22:38:11 +09:00
elk/composables/featureFlags.ts

39 lines
1.1 KiB
TypeScript
Raw Normal View History

2022-11-29 07:57:27 +09:00
import { STORAGE_KEY_FEATURE_FLAGS } from '~/constants'
export interface FeatureFlags {
experimentalVirtualScroll: boolean
2022-12-18 06:11:39 +09:00
experimentalGitHubCards: boolean
2022-12-28 05:07:19 +09:00
experimentalUserPicker: boolean
2022-11-29 07:57:27 +09:00
}
export type FeatureFlagsMap = Record<string, FeatureFlags>
export function getDefaultFeatureFlags(): FeatureFlags {
return {
experimentalVirtualScroll: false,
2022-12-18 06:11:39 +09:00
experimentalGitHubCards: true,
2022-12-28 05:07:19 +09:00
experimentalUserPicker: true,
2022-11-29 07:57:27 +09:00
}
}
2022-12-24 08:19:17 +09:00
export const currentUserFeatureFlags = process.server
? computed(getDefaultFeatureFlags)
: useUserLocalStorage(STORAGE_KEY_FEATURE_FLAGS, getDefaultFeatureFlags)
2022-11-29 07:57:27 +09:00
export function useFeatureFlags() {
const featureFlags = currentUserFeatureFlags.value
return featureFlags
}
export function toggleFeatureFlag(key: keyof FeatureFlags) {
const featureFlags = currentUserFeatureFlags.value
if (featureFlags[key])
featureFlags[key] = !featureFlags[key]
else
featureFlags[key] = true
}
2022-12-28 05:07:19 +09:00
const userPicker = eagerComputed(() => useFeatureFlags().experimentalUserPicker)
export const showUserPicker = computed(() => useUsers().value.length > 1 && userPicker.value)