in ui/src/APIUtil.js [138:175]
function useApi<TParams: {...}, TResponse>(
func: TParams => Promise<TResponse>,
params: TParams,
cacheCounter?: string | number,
): {
response: ?TResponse,
error: ?Error,
isLoading: boolean,
} {
const [response, setResponse] = useState();
const [error, setError] = useState<?Error>(null);
const [isLoading, setIsLoading] = useState(true);
const jsonParams = JSON.stringify(params);
useEffect(() => {
async function makeRequest() {
try {
const parsed = JSON.parse(jsonParams);
setIsLoading(true);
const res = await func(parsed);
setResponse(res);
setError(null);
setIsLoading(false);
} catch (err) {
setError(err);
setResponse(null);
setIsLoading(false);
}
}
makeRequest();
}, [jsonParams, func, cacheCounter]);
return {
error,
response,
isLoading,
};
}