@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
JavaScript
;
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