mirror of
https://github.com/strapi/strapi.git
synced 2025-12-29 08:04:51 +00:00
chore: convert useEnterprise to TS
This commit is contained in:
parent
045254c459
commit
3a008ccc64
17
packages/core/admin/admin/custom.d.ts
vendored
17
packages/core/admin/admin/custom.d.ts
vendored
@ -6,3 +6,20 @@ declare module 'styled-components' {
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||
export interface DefaultTheme extends StrapiTheme {}
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
strapi: {
|
||||
backendURL: string;
|
||||
isEE: boolean;
|
||||
features: {
|
||||
SSO: 'sso';
|
||||
AUDIT_LOGS: 'audit-logs';
|
||||
REVIEW_WORKFLOWS: 'review-workflows';
|
||||
isEnabled: (featureName?: string) => boolean;
|
||||
};
|
||||
projectType: 'Community' | 'Enterprise';
|
||||
telemetryDisabled: boolean;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,12 +1,16 @@
|
||||
import { renderHook, waitFor } from '@testing-library/react';
|
||||
|
||||
import { useEnterprise } from '../useEnterprise';
|
||||
import { useEnterprise, UseEnterpriseOptions } from '../useEnterprise';
|
||||
|
||||
const CE_DATA_FIXTURE = ['CE'];
|
||||
const EE_DATA_FIXTURE = ['EE'];
|
||||
|
||||
function setup(...args) {
|
||||
return renderHook(() => useEnterprise(...args));
|
||||
function setup(
|
||||
ceData: any,
|
||||
eeCallback: () => Promise<any>,
|
||||
options?: UseEnterpriseOptions<any, any, any>
|
||||
) {
|
||||
return renderHook(() => useEnterprise(ceData, eeCallback, options));
|
||||
}
|
||||
|
||||
describe('useEnterprise (CE)', () => {
|
||||
@ -36,7 +40,7 @@ describe('useEnterprise (EE)', () => {
|
||||
|
||||
test('Combines CE and EE data', async () => {
|
||||
const { result } = setup(CE_DATA_FIXTURE, async () => EE_DATA_FIXTURE, {
|
||||
combine(ceData, eeData) {
|
||||
combine(ceData: string[], eeData: string[]) {
|
||||
return [...ceData, ...eeData];
|
||||
},
|
||||
});
|
||||
@ -6,17 +6,27 @@ function isEnterprise() {
|
||||
return window.strapi.isEE;
|
||||
}
|
||||
|
||||
export function useEnterprise(
|
||||
ceData,
|
||||
eeCallback,
|
||||
{ defaultValue = null, combine = (ceData, eeData) => eeData, enabled = true } = {}
|
||||
export interface UseEnterpriseOptions<TCEData, TEEData, TCombinedData> {
|
||||
defaultValue?: TCEData | TEEData | null;
|
||||
combine?: (ceData: TCEData, eeData: TEEData) => TCEData | TEEData | TCombinedData;
|
||||
enabled?: boolean;
|
||||
}
|
||||
|
||||
export function useEnterprise<TCEData, TEEData, TCombinedData = unknown>(
|
||||
ceData: TCEData,
|
||||
eeCallback: () => Promise<TEEData>,
|
||||
{
|
||||
defaultValue = null,
|
||||
combine = (ceData: TCEData, eeData: TEEData) => eeData,
|
||||
enabled = true,
|
||||
}: UseEnterpriseOptions<TCEData, TEEData, TCombinedData> = {}
|
||||
) {
|
||||
const eeCallbackRef = useCallbackRef(eeCallback);
|
||||
const combineCallbackRef = useCallbackRef(combine);
|
||||
|
||||
// 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({
|
||||
const [{ data }, setData] = React.useState<{ data: TCEData | TEEData | TCombinedData | null }>({
|
||||
data: isEnterprise() && enabled ? defaultValue : ceData,
|
||||
});
|
||||
|
||||
@ -1 +0,0 @@
|
||||
export * from './useEnterprise';
|
||||
Loading…
x
Reference in New Issue
Block a user