mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 05:14:54 +00:00
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