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.

35 lines 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useURLPoll = useURLPoll; /* 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"); const URL_POLL_DEFAULT_DELAY = 15000; // 15 seconds function useURLPoll(url, delay = URL_POLL_DEFAULT_DELAY, ...dependencies) { const [error, setError] = (0, react_1.useState)(null); const [response, setResponse] = (0, react_1.useState)(undefined); const [loaded, setLoaded] = (0, react_1.useState)(false); 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(undefined); setError(err); console.error(`Error polling URL: ${err}`); } }) .finally(() => setLoaded(true)); } }, [url]); (0, usePoll_1.usePoll)(tick, delay, ...dependencies); return [response, loaded, error]; } //# sourceMappingURL=useURLPoll.js.map