diff --git a/src/composables/useFeatureFlags.ts b/src/composables/useFeatureFlags.ts index db3edf68c..a578eb8bf 100644 --- a/src/composables/useFeatureFlags.ts +++ b/src/composables/useFeatureFlags.ts @@ -7,7 +7,8 @@ import { api } from '@/scripts/api' */ export enum ServerFeatureFlag { SUPPORTS_PREVIEW_METADATA = 'supports_preview_metadata', - MAX_UPLOAD_SIZE = 'max_upload_size' + MAX_UPLOAD_SIZE = 'max_upload_size', + MANAGER_SUPPORTS_V4 = 'extension.manager.supports_v4' } /** @@ -21,6 +22,9 @@ export function useFeatureFlags() { }, get maxUploadSize() { return api.getServerFeature(ServerFeatureFlag.MAX_UPLOAD_SIZE) + }, + get supportsManagerV4() { + return api.getServerFeature(ServerFeatureFlag.MANAGER_SUPPORTS_V4) } }) diff --git a/src/config/clientFeatureFlags.json b/src/config/clientFeatureFlags.json index 84a233ccf..e3fae6628 100644 --- a/src/config/clientFeatureFlags.json +++ b/src/config/clientFeatureFlags.json @@ -1,3 +1,4 @@ { - "supports_preview_metadata": true + "supports_preview_metadata": true, + "supports_manager_v4_ui": true } diff --git a/tests-ui/tests/composables/useFeatureFlags.test.ts b/tests-ui/tests/composables/useFeatureFlags.test.ts index 5b385f3c2..eddb57b65 100644 --- a/tests-ui/tests/composables/useFeatureFlags.test.ts +++ b/tests-ui/tests/composables/useFeatureFlags.test.ts @@ -59,6 +59,21 @@ describe('useFeatureFlags', () => { ) }) + it('should access supportsManagerV4', () => { + vi.mocked(api.getServerFeature).mockImplementation( + (path, defaultValue) => { + if (path === ServerFeatureFlag.MANAGER_SUPPORTS_V4) return true as any + return defaultValue + } + ) + + const { flags } = useFeatureFlags() + expect(flags.supportsManagerV4).toBe(true) + expect(api.getServerFeature).toHaveBeenCalledWith( + ServerFeatureFlag.MANAGER_SUPPORTS_V4 + ) + }) + it('should return undefined when features are not available and no default provided', () => { vi.mocked(api.getServerFeature).mockImplementation( (_path, defaultValue) => defaultValue as any @@ -67,6 +82,7 @@ describe('useFeatureFlags', () => { const { flags } = useFeatureFlags() expect(flags.supportsPreviewMetadata).toBeUndefined() expect(flags.maxUploadSize).toBeUndefined() + expect(flags.supportsManagerV4).toBeUndefined() }) })