fix: remove unused hook useFeatureFlag (#1826)

This commit is contained in:
Himself65
2023-04-05 19:57:15 -05:00
committed by GitHub
parent 0c87bf36ca
commit 76c0d01640
2 changed files with 0 additions and 70 deletions

View File

@@ -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);
});
});

View File

@@ -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])
);
}