UNPKG

@stolostron/multicluster-sdk

Version:

Provides extensions and APIs that dynamic plugins can use to leverage multicluster capabilities provided by Red Hat Advanced Cluster Management.

48 lines 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useHubConfigurationItem = void 0; /* Copyright Contributors to the Open Cluster Management project */ const react_1 = require("react"); const constants_1 = require("./constants"); const cachedHubConfiguration_1 = require("./cachedHubConfiguration"); const useIsFleetAvailable_1 = require("../api/useIsFleetAvailable"); const useHubConfigurationItem = (key) => { const fleetAvailable = (0, useIsFleetAvailable_1.useIsFleetAvailable)(); const cachedResult = (0, cachedHubConfiguration_1.getCachedHubConfiguration)()?.[key]; const [item, setItem] = (0, react_1.useState)(fleetAvailable ? cachedResult : undefined); const [loaded, setLoaded] = (0, react_1.useState)(fleetAvailable ? cachedResult !== undefined : false); const [error, setError] = (0, react_1.useState)(fleetAvailable ? undefined : constants_1.NO_FLEET_AVAILABLE_ERROR); const setResult = (0, react_1.useCallback)((item) => { setItem(item); setLoaded(true); setError(undefined); }, []); (0, react_1.useEffect)(() => { if (!fleetAvailable) { setItem(undefined); setLoaded(false); setError(constants_1.NO_FLEET_AVAILABLE_ERROR); } else { const cachedHubConfiguration = (0, cachedHubConfiguration_1.getCachedHubConfiguration)(); if (cachedHubConfiguration) { setResult(cachedHubConfiguration[key]); } else { (0, cachedHubConfiguration_1.fetchHubConfiguration)() .then((hc) => { if (hc) { setResult(hc[key]); } }) .catch((err) => { setLoaded(false); setError(err); }); } } }, [fleetAvailable, key, setResult]); return (0, react_1.useMemo)(() => [item, loaded, error], [item, loaded, error]); }; exports.useHubConfigurationItem = useHubConfigurationItem; //# sourceMappingURL=useHubConfigurationItem.js.map