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-20 00:44:14 +09:00
|
|
|
|
2022-12-28 05:07:19 +09:00
|
|
|
const userPicker = eagerComputed(() => useFeatureFlags().experimentalUserPicker)
|
|
|
|
export const showUserPicker = computed(() => useUsers().value.length > 1 && userPicker.value)
|