/usr/share/grafana/public/app/plugins/datasource/azuremonitor/utils
import { useEffect, useMemo, useState } from 'react'; export function useAsyncState<T>(asyncFn: () => Promise<T>, setError: Function, dependencies: unknown[]) { // Use the lazy initial state functionality of useState to assign a random ID to the API call // to track where errors come from. See useLastError. const [errorSource] = useState(() => Math.random()); const [value, setValue] = useState<T>(); const finalValue = useMemo(() => value ?? [], [value]); useEffect(() => { asyncFn() .then((results) => { setValue(results); setError(errorSource, undefined); }) .catch((err) => { setError(errorSource, err); }); // eslint-disable-next-line react-hooks/exhaustive-deps }, dependencies); return finalValue; }
.
Edit
..
Edit
common.test.ts
Edit
common.ts
Edit
messageFromError.test.ts
Edit
messageFromError.ts
Edit
migrateAnnotation.test.ts
Edit
migrateAnnotation.ts
Edit
migrateQuery.test.ts
Edit
migrateQuery.ts
Edit
testUtils.ts
Edit
useAsyncState.test.ts
Edit
useAsyncState.ts
Edit
useLastError.test.ts
Edit
useLastError.ts
Edit