@openshift-assisted/ui-lib
Version:
React component library for the Assisted Installer UI
84 lines • 5.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NewFeatureSupportLevelProvider = exports.getFeatureSupported = void 0;
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importDefault(require("react"));
const common_1 = require("../../../common");
const hooks_1 = require("../../hooks");
const featureStateUtils_1 = require("./featureStateUtils");
const useInfraEnv_1 = tslib_1.__importDefault(require("../../hooks/useInfraEnv"));
const newFeatureSupportLevels_1 = require("../../../common/components/newFeatureSupportLevels");
const useSupportLevelsAPI_1 = tslib_1.__importDefault(require("../../hooks/useSupportLevelsAPI"));
const OpenShiftVersionsContext_1 = require("../clusterWizard/OpenShiftVersionsContext");
const getFeatureSupported = (featureSupportLevels, featureId) => {
return featureSupportLevels && (0, featureStateUtils_1.isFeatureSupportedAndAvailable)(featureSupportLevels[featureId]);
};
exports.getFeatureSupported = getFeatureSupported;
const NewFeatureSupportLevelProvider = ({ cluster, children, loadingUi, cpuArchitecture, openshiftVersion, platformType, }) => {
const { loading: loadingOCPVersions } = (0, OpenShiftVersionsContext_1.useOpenShiftVersionsContext)();
const pullSecret = (0, hooks_1.usePullSecret)();
const { infraEnv, isLoading: isInfraEnvLoading } = (0, useInfraEnv_1.default)((cluster === null || cluster === void 0 ? void 0 : cluster.id) || '', (cluster === null || cluster === void 0 ? void 0 : cluster.cpuArchitecture)
? cluster.cpuArchitecture
: common_1.CpuArchitecture.USE_DAY1_ARCHITECTURE, cluster === null || cluster === void 0 ? void 0 : cluster.name, pullSecret, cluster === null || cluster === void 0 ? void 0 : cluster.openshiftVersion);
const featureSupportLevels = (0, useSupportLevelsAPI_1.default)('features', openshiftVersion, cpuArchitecture, platformType);
const supportLevelData = react_1.default.useMemo(() => {
if (!featureSupportLevels) {
return {};
}
return featureSupportLevels;
}, [featureSupportLevels]);
const isLoading = !supportLevelData || loadingOCPVersions || isInfraEnvLoading;
const activeFeatureConfiguration = react_1.default.useMemo(() => ({
underlyingCpuArchitecture: ((infraEnv === null || infraEnv === void 0 ? void 0 : infraEnv.cpuArchitecture) ||
(cluster === null || cluster === void 0 ? void 0 : cluster.cpuArchitecture) ||
(0, common_1.getDefaultCpuArchitecture)()),
hasStaticIpNetworking: !!(infraEnv === null || infraEnv === void 0 ? void 0 : infraEnv.staticNetworkConfig),
}), [cluster === null || cluster === void 0 ? void 0 : cluster.cpuArchitecture, infraEnv === null || infraEnv === void 0 ? void 0 : infraEnv.cpuArchitecture, infraEnv === null || infraEnv === void 0 ? void 0 : infraEnv.staticNetworkConfig]);
const getFeatureSupportLevels = react_1.default.useCallback(() => {
return supportLevelData;
}, [supportLevelData]);
const getFeatureSupportLevel = react_1.default.useCallback((featureId, supportLevelDataNew) => {
if (supportLevelDataNew) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
return supportLevelDataNew ? supportLevelDataNew[featureId] : undefined;
}
else {
if (supportLevelData) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
return supportLevelData ? supportLevelData[featureId] : undefined;
}
}
}, [supportLevelData]);
const isFeatureSupportedCallback = react_1.default.useCallback((featureId, supportLevelDataNew) => {
const supportLevel = getFeatureSupportLevel(featureId, supportLevelDataNew);
return (0, featureStateUtils_1.isFeatureSupportedAndAvailable)(supportLevel);
}, [getFeatureSupportLevel]);
const getDisabledReasonCallback = react_1.default.useCallback((featureId, supportLevelDataNew, cpuArchitecture, platformType) => {
const isSupported = isFeatureSupportedCallback(featureId, supportLevelDataNew);
return (0, featureStateUtils_1.getNewFeatureDisabledReason)(featureId, cluster, activeFeatureConfiguration, isSupported, cpuArchitecture, platformType);
}, [isFeatureSupportedCallback, cluster, activeFeatureConfiguration]);
const isFeatureDisabled = react_1.default.useCallback((featureId, supportLevelDataNew) => !!getDisabledReasonCallback(featureId, supportLevelDataNew), [getDisabledReasonCallback]);
const providerValue = react_1.default.useMemo(() => {
return {
getFeatureSupportLevels: getFeatureSupportLevels,
getFeatureSupportLevel: getFeatureSupportLevel,
isFeatureDisabled: isFeatureDisabled,
getFeatureDisabledReason: getDisabledReasonCallback,
isFeatureSupported: isFeatureSupportedCallback,
activeFeatureConfiguration,
};
}, [
getFeatureSupportLevels,
getFeatureSupportLevel,
isFeatureDisabled,
getDisabledReasonCallback,
isFeatureSupportedCallback,
activeFeatureConfiguration,
]);
return (react_1.default.createElement(newFeatureSupportLevels_1.NewFeatureSupportLevelContextProvider, { value: providerValue }, isLoading ? loadingUi : children));
};
exports.NewFeatureSupportLevelProvider = NewFeatureSupportLevelProvider;
exports.default = exports.NewFeatureSupportLevelProvider;
//# sourceMappingURL=FeatureSupportLevelProvider.js.map