mirror of
				https://gitlab.nic.cz/turris/reforis/foris-js.git
				synced 2025-11-03 23:00:31 +01:00 
			
		
		
		
	Merge branch 'api-polling' into 'dev'
Add hook for API polling. See merge request turris/reforis/foris-js!41
This commit is contained in:
		@@ -5,7 +5,9 @@
 | 
			
		||||
 * See /LICENSE for more information.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import { useCallback, useReducer } from "react";
 | 
			
		||||
import {
 | 
			
		||||
    useCallback, useEffect, useReducer, useState,
 | 
			
		||||
} from "react";
 | 
			
		||||
 | 
			
		||||
import { ForisURLs } from "forisUrls";
 | 
			
		||||
import {
 | 
			
		||||
@@ -90,3 +92,23 @@ const useAPIDelete = createAPIHook("DELETE");
 | 
			
		||||
export {
 | 
			
		||||
    useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function useAPIPolling(endpoint, delay = 1000, until) { // delay ms
 | 
			
		||||
    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 (until) {
 | 
			
		||||
            const interval = setInterval(get, delay);
 | 
			
		||||
            return () => clearInterval(interval);
 | 
			
		||||
        }
 | 
			
		||||
    }, [until, delay, get]);
 | 
			
		||||
 | 
			
		||||
    return [state];
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,12 @@
 | 
			
		||||
 | 
			
		||||
// API
 | 
			
		||||
export {
 | 
			
		||||
    useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete,
 | 
			
		||||
    useAPIGet,
 | 
			
		||||
    useAPIPost,
 | 
			
		||||
    useAPIPatch,
 | 
			
		||||
    useAPIPut,
 | 
			
		||||
    useAPIDelete,
 | 
			
		||||
    useAPIPolling,
 | 
			
		||||
} from "api/hooks";
 | 
			
		||||
export { API_STATE } from "api/utils";
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user