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