UNPKG

@digital-ai/plugin-dai-release

Version:

Frontend functionalities for the dai-release backstage plugin

49 lines (46 loc) 1.61 kB
import { useRef, useEffect } from 'react'; import { daiReleaseApiRef } from '../api/DaiReleaseApi.esm.js'; import '@backstage/errors'; import 'moment'; import { useApi } from '@backstage/core-plugin-api'; function useReleaseCategories(instance, setReleaseCategories, setLoadingReleaseCategories) { const api = useApi(daiReleaseApiRef); const abortControllerRef = useRef(null); useEffect(() => { let isMounted = true; const getReleaseCategories = async () => { if (!isMounted) return; setLoadingReleaseCategories(true); try { if (abortControllerRef.current) { abortControllerRef.current.abort(); } const abortController = new AbortController(); abortControllerRef.current = abortController; setReleaseCategories([]); const result = await api.getReleaseCategories(instance); if (isMounted && !abortController.signal.aborted) { setReleaseCategories(result.activeCategory); setLoadingReleaseCategories(false); } } catch (err) { const abortError = err; if (abortError.name !== "AbortError") { setReleaseCategories([]); setLoadingReleaseCategories(false); } } }; if (instance) { getReleaseCategories(); } return () => { isMounted = false; if (abortControllerRef.current) { abortControllerRef.current.abort(); } }; }, [api, instance, setReleaseCategories, setLoadingReleaseCategories]); } export { useReleaseCategories }; //# sourceMappingURL=useReleaseCategories.esm.js.map