mirror of
https://gitlab.nic.cz/turris/reforis/foris-js.git
synced 2024-12-26 00:21:36 +01:00
Add hook for API polling.
This commit is contained in:
parent
d935f78d6e
commit
2e68e56e44
|
@ -5,7 +5,9 @@
|
||||||
* See /LICENSE for more information.
|
* See /LICENSE for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useCallback, useReducer } from "react";
|
import {
|
||||||
|
useCallback, useEffect, useReducer, useState,
|
||||||
|
} from "react";
|
||||||
|
|
||||||
import { ForisURLs } from "forisUrls";
|
import { ForisURLs } from "forisUrls";
|
||||||
import {
|
import {
|
||||||
|
@ -90,3 +92,23 @@ const useAPIDelete = createAPIHook("DELETE");
|
||||||
export {
|
export {
|
||||||
useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete,
|
useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function useAPIPolling(endpoint, delay) {
|
||||||
|
const [state, setState] = useState({ state: API_STATE.INIT });
|
||||||
|
const [getState, get] = useAPIGet(endpoint);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (getState.state === API_STATE.SUCCESS) {
|
||||||
|
setState(getState);
|
||||||
|
}
|
||||||
|
}, [getState]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (delay !== null) {
|
||||||
|
const interval = setInterval(get, delay);
|
||||||
|
return () => clearInterval(interval);
|
||||||
|
}
|
||||||
|
}, [delay, get]);
|
||||||
|
|
||||||
|
return [state];
|
||||||
|
}
|
||||||
|
|
|
@ -7,7 +7,12 @@
|
||||||
|
|
||||||
// API
|
// API
|
||||||
export {
|
export {
|
||||||
useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete,
|
useAPIGet,
|
||||||
|
useAPIPost,
|
||||||
|
useAPIPatch,
|
||||||
|
useAPIPut,
|
||||||
|
useAPIDelete,
|
||||||
|
useAPIPolling,
|
||||||
} from "api/hooks";
|
} from "api/hooks";
|
||||||
export { API_STATE } from "api/utils";
|
export { API_STATE } from "api/utils";
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user