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.

40 lines 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useURLPoll = exports.URL_POLL_DEFAULT_DELAY = void 0; /* Copyright Contributors to the Open Cluster Management project */ /* eslint-disable react-hooks/exhaustive-deps */ const react_1 = require("react"); const usePoll_1 = require("./usePoll"); const useSafeFetch_1 = require("./useSafeFetch"); exports.URL_POLL_DEFAULT_DELAY = 15000; // 15 seconds const useURLPoll = (url, delay = exports.URL_POLL_DEFAULT_DELAY, ...dependencies) => { const [error, setError] = (0, react_1.useState)(null); const [response, setResponse] = (0, react_1.useState)(null); const [loading, setLoading] = (0, react_1.useState)(true); const safeFetch = (0, useSafeFetch_1.useSafeFetch)(); const tick = (0, react_1.useCallback)(() => { if (url) { safeFetch(url) .then((data) => { setResponse(data); setError(null); }) .catch((err) => { if (err.name !== 'AbortError') { setResponse(null); setError(err); // eslint-disable-next-line no-console console.error(`Error polling URL: ${err}`); } }) .finally(() => setLoading(false)); } else { setLoading(false); } }, [url]); (0, usePoll_1.usePoll)(tick, delay, ...dependencies); return [response, error, loading]; }; exports.useURLPoll = useURLPoll; //# sourceMappingURL=useURLPoll.js.map