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