From 76c0d0164026a16342097c341182e1cdaee97c66 Mon Sep 17 00:00:00 2001 From: Himself65 Date: Wed, 5 Apr 2023 19:57:15 -0500 Subject: [PATCH] fix: remove unused hook `useFeatureFlag` (#1826) --- .../hooks/__tests__/use-feature-flag.spec.ts | 25 ----------- apps/web/src/hooks/use-feature-flag.ts | 45 ------------------- 2 files changed, 70 deletions(-) delete mode 100644 apps/web/src/hooks/__tests__/use-feature-flag.spec.ts delete mode 100644 apps/web/src/hooks/use-feature-flag.ts diff --git a/apps/web/src/hooks/__tests__/use-feature-flag.spec.ts b/apps/web/src/hooks/__tests__/use-feature-flag.spec.ts deleted file mode 100644 index 81d3326ea0..0000000000 --- a/apps/web/src/hooks/__tests__/use-feature-flag.spec.ts +++ /dev/null @@ -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); - }); -}); diff --git a/apps/web/src/hooks/use-feature-flag.ts b/apps/web/src/hooks/use-feature-flag.ts deleted file mode 100644 index 8e81abff1f..0000000000 --- a/apps/web/src/hooks/use-feature-flag.ts +++ /dev/null @@ -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: Key) => - featureFlag.record[key]; - -export function useFeatureFlag( - 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]) - ); -}