🎨 Refactor code style for consistency and readability in feature flag composable
This commit is contained in:
@@ -15,7 +15,11 @@
|
||||
|
||||
import { ref, computed, readonly } from 'vue';
|
||||
import { useAuth } from './useAuth.js';
|
||||
import { FEATURE_FLAGS, getFlag, getFlagPermission } from '../config/feature-flags.js';
|
||||
import {
|
||||
FEATURE_FLAGS,
|
||||
getFlag,
|
||||
getFlagPermission
|
||||
} from '../config/feature-flags.js';
|
||||
|
||||
// Local storage key for overrides
|
||||
const LOCAL_OVERRIDES_KEY = 'feature_flag_overrides';
|
||||
@@ -68,7 +72,7 @@ export function useFeatureFlags() {
|
||||
* Checks in order: local override, permission requirement, default value
|
||||
*/
|
||||
const isEnabled = computed(() => {
|
||||
return (flagName) => {
|
||||
return flagName => {
|
||||
// Check local override first
|
||||
if (flagName in localOverrides.value) {
|
||||
return localOverrides.value[flagName];
|
||||
@@ -100,15 +104,16 @@ export function useFeatureFlags() {
|
||||
* Toggle a flag override (dev mode only)
|
||||
* Only works in development mode
|
||||
*/
|
||||
const toggle = (flagName) => {
|
||||
const toggle = flagName => {
|
||||
if (process.env.NODE_ENV !== 'development') {
|
||||
console.warn('Feature flag overrides only available in development mode');
|
||||
return false;
|
||||
}
|
||||
|
||||
const current = localOverrides.value[flagName] !== undefined
|
||||
const current =
|
||||
localOverrides.value[flagName] !== undefined
|
||||
? localOverrides.value[flagName]
|
||||
: getFlag(flagName)?.enabled ?? false;
|
||||
: (getFlag(flagName)?.enabled ?? false);
|
||||
|
||||
localOverrides.value[flagName] = !current;
|
||||
saveLocalOverrides(localOverrides.value);
|
||||
@@ -119,7 +124,7 @@ export function useFeatureFlags() {
|
||||
/**
|
||||
* Reset a specific flag override
|
||||
*/
|
||||
const reset = (flagName) => {
|
||||
const reset = flagName => {
|
||||
if (process.env.NODE_ENV !== 'development') {
|
||||
console.warn('Feature flag overrides only available in development mode');
|
||||
return;
|
||||
@@ -153,7 +158,8 @@ export function useFeatureFlags() {
|
||||
hasOverride: flag.name in localOverrides.value,
|
||||
override: localOverrides.value[flag.name],
|
||||
requiresPermission: !!flag.requiredPermission,
|
||||
hasPermission: !flag.requiredPermission || hasPermission(flag.requiredPermission)
|
||||
hasPermission:
|
||||
!flag.requiredPermission || hasPermission(flag.requiredPermission)
|
||||
}));
|
||||
};
|
||||
});
|
||||
@@ -162,7 +168,7 @@ export function useFeatureFlags() {
|
||||
* Set flags from backend response
|
||||
* Called after fetching flags from backend
|
||||
*/
|
||||
const setBackendFlags = (flags) => {
|
||||
const setBackendFlags = flags => {
|
||||
backendFlags.value = flags;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user