mirror of
https://github.com/elk-zone/elk.git
synced 2024-11-20 07:49:57 +00:00
cd85871d01
* feat: account switcher sidebar * fix: defer loading sidebar until masto initialised * fix: only show user switcher for 2 or more accounts * chore: use `ofetch` (newer version of `ohymfetch`) * chore: early alpha warning * fix: handle missing user in github preview * refactor: avoid circular auto-import Co-authored-by: Daniel Roe <daniel@roe.dev>
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
import { STORAGE_KEY_FEATURE_FLAGS } from '~/constants'
|
|
|
|
export interface FeatureFlags {
|
|
experimentalVirtualScroll: boolean
|
|
experimentalAvatarOnAvatar: boolean
|
|
experimentalGitHubCards: boolean
|
|
experimentalUserSwitcherSidebar: boolean
|
|
}
|
|
export type FeatureFlagsMap = Record<string, FeatureFlags>
|
|
|
|
export function getDefaultFeatureFlags(): FeatureFlags {
|
|
return {
|
|
experimentalVirtualScroll: false,
|
|
experimentalAvatarOnAvatar: true,
|
|
experimentalGitHubCards: true,
|
|
experimentalUserSwitcherSidebar: true,
|
|
}
|
|
}
|
|
|
|
export const currentUserFeatureFlags = process.server ? computed(getDefaultFeatureFlags) : useUserLocalStorage(STORAGE_KEY_FEATURE_FLAGS, getDefaultFeatureFlags)
|
|
|
|
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
|
|
}
|
|
|
|
const userSwitcherSidebar = eagerComputed(() => useFeatureFlags().experimentalUserSwitcherSidebar)
|
|
export const showUserSwitcherSidebar = computed(() => useUsers().value.length > 1 && userSwitcherSidebar.value)
|