diff --git a/packages/core/admin/admin/src/hooks/useContentTypes/__mocks__/index.js b/packages/core/admin/admin/src/hooks/__mocks__/useContentTypes.ts similarity index 100% rename from packages/core/admin/admin/src/hooks/useContentTypes/__mocks__/index.js rename to packages/core/admin/admin/src/hooks/__mocks__/useContentTypes.ts diff --git a/packages/core/admin/admin/src/hooks/index.js b/packages/core/admin/admin/src/hooks/index.js index 0352ee32d5..3735470833 100644 --- a/packages/core/admin/admin/src/hooks/index.js +++ b/packages/core/admin/admin/src/hooks/index.js @@ -1,3 +1,2 @@ -export { useContentTypes } from './useContentTypes'; export { default as useSettingsForm } from './useSettingsForm'; export { default as useSettingsMenu } from './useSettingsMenu'; diff --git a/packages/core/admin/admin/src/hooks/useContentTypes/tests/index.test.js b/packages/core/admin/admin/src/hooks/tests/useContentTypes.test.ts similarity index 94% rename from packages/core/admin/admin/src/hooks/useContentTypes/tests/index.test.js rename to packages/core/admin/admin/src/hooks/tests/useContentTypes.test.ts index 69bdffdc8f..8faaf85455 100644 --- a/packages/core/admin/admin/src/hooks/useContentTypes/tests/index.test.js +++ b/packages/core/admin/admin/src/hooks/tests/useContentTypes.test.ts @@ -1,6 +1,6 @@ import { renderHook, waitFor } from '@tests/utils'; -import { useContentTypes } from '../index'; +import { useContentTypes } from '../useContentTypes'; describe('useContentTypes', () => { test('fetches models and content-types', async () => { diff --git a/packages/core/admin/admin/src/hooks/useContentTypes/useContentTypes.js b/packages/core/admin/admin/src/hooks/useContentTypes.ts similarity index 58% rename from packages/core/admin/admin/src/hooks/useContentTypes/useContentTypes.js rename to packages/core/admin/admin/src/hooks/useContentTypes.ts index 1917f9bc69..f8a1f10193 100644 --- a/packages/core/admin/admin/src/hooks/useContentTypes/useContentTypes.js +++ b/packages/core/admin/admin/src/hooks/useContentTypes.ts @@ -1,32 +1,55 @@ import * as React from 'react'; import { useAPIErrorHandler, useFetchClient, useNotification } from '@strapi/helper-plugin'; +import { AxiosError } from 'axios'; import { useQueries } from 'react-query'; +import { Component, ContentType } from '../../../shared/schema'; +import { APIResponse } from '../types/adminAPI'; + export function useContentTypes() { const { get } = useFetchClient(); const { formatAPIError } = useAPIErrorHandler(); const toggleNotification = useNotification(); - const queries = useQueries( - ['components', 'content-types'].map((type) => { - return { - queryKey: ['content-manager', type], - async queryFn() { - const { - data: { data }, - } = await get(`/content-manager/${type}`); + const queries = useQueries([ + { + queryKey: ['content-manager', 'components'], + async queryFn() { + const { + data: { data }, + } = await get>(`/content-manager/components`); - return data; - }, - onError(error) { + return data; + }, + onError(error: unknown) { + if (error instanceof AxiosError) { toggleNotification({ type: 'warning', message: formatAPIError(error), }); - }, - }; - }) - ); + } + }, + }, + + { + queryKey: ['content-manager', 'content-types'], + async queryFn() { + const { + data: { data }, + } = await get>(`/content-manager/content-types`); + + return data; + }, + onError(error: unknown) { + if (error instanceof AxiosError) { + toggleNotification({ + type: 'warning', + message: formatAPIError(error), + }); + } + }, + }, + ]); const [components, contentTypes] = queries; const isLoading = components.isLoading || contentTypes.isLoading; diff --git a/packages/core/admin/admin/src/hooks/useContentTypes/index.js b/packages/core/admin/admin/src/hooks/useContentTypes/index.js deleted file mode 100644 index c550533769..0000000000 --- a/packages/core/admin/admin/src/hooks/useContentTypes/index.js +++ /dev/null @@ -1 +0,0 @@ -export * from './useContentTypes'; diff --git a/packages/core/admin/shared/schema.ts b/packages/core/admin/shared/schema.ts new file mode 100644 index 0000000000..58890a20e2 --- /dev/null +++ b/packages/core/admin/shared/schema.ts @@ -0,0 +1,9 @@ +import { Schema } from '@strapi/types'; + +export interface ContentType extends Schema.ContentType { + isDisplayed: boolean; +} + +export interface Component extends Schema.Component { + isDisplayed: boolean; +}