diff --git a/docs/docs/docs/01-core/admin/04-hooks/use-enterprise.mdx b/docs/docs/docs/01-core/admin/04-hooks/use-enterprise.mdx index a8e0c49977..ca95abc1b8 100644 --- a/docs/docs/docs/01-core/admin/04-hooks/use-enterprise.mdx +++ b/docs/docs/docs/01-core/admin/04-hooks/use-enterprise.mdx @@ -54,3 +54,8 @@ if (!Component) { return; } ``` + +### `enabled` + +Similar to react-query this boolean flag allows disabling the EE import, e.g. when more than one condition needs to be applied. If `enabled` +is set to false, the first argument (CE_DATA) will be returned. diff --git a/packages/core/admin/admin/src/hooks/useEnterprise/tests/useEnterprise.test.js b/packages/core/admin/admin/src/hooks/useEnterprise/tests/useEnterprise.test.js index 47a8d20824..96b3a59e79 100644 --- a/packages/core/admin/admin/src/hooks/useEnterprise/tests/useEnterprise.test.js +++ b/packages/core/admin/admin/src/hooks/useEnterprise/tests/useEnterprise.test.js @@ -54,6 +54,14 @@ describe('useEnterprise (EE)', () => { await waitFor(() => expect(result.current).toStrictEqual(EE_DATA_FIXTURE)); }); + test('Returns CE data, when enabled is set to false', async () => { + const { result } = setup(CE_DATA_FIXTURE, async () => EE_DATA_FIXTURE, { + enabled: false, + }); + + await waitFor(() => expect(result.current).toStrictEqual(CE_DATA_FIXTURE)); + }); + test('Returns a custom defaultValue on first render followed by the EE data', async () => { const { result } = setup(CE_DATA_FIXTURE, async () => EE_DATA_FIXTURE, { defaultValue: false, diff --git a/packages/core/admin/admin/src/hooks/useEnterprise/useEnterprise.js b/packages/core/admin/admin/src/hooks/useEnterprise/useEnterprise.js index 97688cd872..03ab26c88f 100644 --- a/packages/core/admin/admin/src/hooks/useEnterprise/useEnterprise.js +++ b/packages/core/admin/admin/src/hooks/useEnterprise/useEnterprise.js @@ -9,7 +9,7 @@ function isEnterprise() { export function useEnterprise( ceData, eeCallback, - { defaultValue = null, combine = (ceData, eeData) => eeData } = {} + { defaultValue = null, combine = (ceData, eeData) => eeData, enabled = true } = {} ) { const eeCallbackRef = useCallbackRef(eeCallback); const combineCallbackRef = useCallbackRef(combine); @@ -17,7 +17,7 @@ export function useEnterprise( // We have to use a nested object here, because functions (e.g. Components) // can not be stored as value directly const [{ data }, setData] = React.useState({ - data: isEnterprise() ? defaultValue : ceData, + data: isEnterprise() && enabled ? defaultValue : ceData, }); React.useEffect(() => { @@ -27,10 +27,10 @@ export function useEnterprise( setData({ data: combineCallbackRef(ceData, eeData) }); } - if (isEnterprise()) { + if (isEnterprise() && enabled) { importEE(); } - }, [ceData, eeCallbackRef, combineCallbackRef]); + }, [ceData, eeCallbackRef, combineCallbackRef, enabled]); return data; }