import { useTranslation } from 'react-i18next';
import { MenuSkeleton, PageSkeleton, useFetchQuery } from '../../..';
import { FallbackPage } from '../../../FallbackPage/FallbackPage';
import { getModuleLicenseCheckEndpoint } from '../api';
import { licenseDecoder } from './decoder';
import type { License } from './models';
import {
labelContactYourAdministrator,
labelInvalidLicense,
labelOops
} from './translatedLabels';
export interface LicenseCheckProps {
children: React.ReactElement;
isFederatedComponent?: boolean;
moduleName: string;
}
interface ContentProps {
children: React.ReactElement;
isFederatedComponent?: boolean;
isValid: boolean;
}
const Content = ({
children,
isValid,
isFederatedComponent
}: ContentProps): JSX.Element | null => {
const { t } = useTranslation();
if (isFederatedComponent && !isValid) {
return null;
}
return isValid ? (
children
) : (
);
};
const LicenseCheck = ({
isFederatedComponent,
children,
moduleName
}: LicenseCheckProps): JSX.Element | null => {
const { isError, data, isLoading } = useFetchQuery({
decoder: licenseDecoder,
getEndpoint: () => getModuleLicenseCheckEndpoint(moduleName),
getQueryKey: () => ['license', moduleName]
});
if (isError) {
return null;
}
const isValid = data?.success;
const skeleton = isFederatedComponent ? : ;
return isLoading ? (
skeleton
) : (
{children}
);
};
export default LicenseCheck;