fix: remove unused hook useFeatureFlag (#1826)
This commit is contained in:
@@ -1,25 +0,0 @@
|
|||||||
/**
|
|
||||||
* @vitest-environment happy-dom
|
|
||||||
*/
|
|
||||||
import { renderHook } from '@testing-library/react';
|
|
||||||
import { beforeEach, describe, expect, test } from 'vitest';
|
|
||||||
|
|
||||||
import { defaultRecord, useFeatureFlag } from '../use-feature-flag';
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
globalThis.featureFlag.record = defaultRecord;
|
|
||||||
globalThis.featureFlag.callback.clear();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('useFeatureFlag', () => {
|
|
||||||
test('basic', () => {
|
|
||||||
const flagHook = renderHook(() =>
|
|
||||||
useFeatureFlag('enableIndexedDBProvider')
|
|
||||||
);
|
|
||||||
expect(flagHook.result.current).toBe(defaultRecord.enableIndexedDBProvider);
|
|
||||||
globalThis.featureFlag.record.enableIndexedDBProvider = false;
|
|
||||||
globalThis.featureFlag.callback.forEach(cb => cb());
|
|
||||||
flagHook.rerender();
|
|
||||||
expect(flagHook.result.current).toBe(false);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
import { useCallback, useSyncExternalStore } from 'react';
|
|
||||||
|
|
||||||
interface FeatureFlag {
|
|
||||||
enableIndexedDBProvider: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const defaultRecord: FeatureFlag = {
|
|
||||||
enableIndexedDBProvider: true,
|
|
||||||
} as const;
|
|
||||||
|
|
||||||
const featureFlag = {
|
|
||||||
record: {
|
|
||||||
enableIndexedDBProvider: true,
|
|
||||||
} as FeatureFlag,
|
|
||||||
callback: new Set<() => void>(),
|
|
||||||
};
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
// eslint-disable-next-line no-var
|
|
||||||
var featureFlag: {
|
|
||||||
record: FeatureFlag;
|
|
||||||
callback: Set<() => void>;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (!globalThis.featureFlag) {
|
|
||||||
globalThis.featureFlag = featureFlag;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getFeatureFlag = <Key extends keyof FeatureFlag>(key: Key) =>
|
|
||||||
featureFlag.record[key];
|
|
||||||
|
|
||||||
export function useFeatureFlag<Key extends keyof FeatureFlag>(
|
|
||||||
key: Key
|
|
||||||
): FeatureFlag[Key] {
|
|
||||||
return useSyncExternalStore(
|
|
||||||
useCallback(onStoreChange => {
|
|
||||||
featureFlag.callback.add(onStoreChange);
|
|
||||||
return () => {
|
|
||||||
featureFlag.callback.delete(onStoreChange);
|
|
||||||
};
|
|
||||||
}, []),
|
|
||||||
useCallback(() => featureFlag.record[key], [key]),
|
|
||||||
useCallback(() => defaultRecord[key], [key])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user