UNPKG

@digital-ai/plugin-dai-release

Version:

Frontend functionalities for the dai-release backstage plugin

53 lines (50 loc) 1.67 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 useGetTemplateMetaInfo(instance, folderId, setMetaInfo, sourcePage) { const api = useApi(daiReleaseApiRef); const abortControllerRef = useRef(null); const previousMetaInfoRef = useRef( void 0 ); useEffect(() => { let isMounted = true; const fetchMetaInfo = async () => { try { if (abortControllerRef.current) { abortControllerRef.current.abort(); } const abortController = new AbortController(); abortControllerRef.current = abortController; setMetaInfo(void 0); const result = await api.getTemplateMetaInfo(instance, folderId, { signal: abortController.signal }); if (isMounted && !abortController.signal.aborted) { if (result && JSON.stringify(result) !== JSON.stringify(previousMetaInfoRef.current)) { previousMetaInfoRef.current = result; setMetaInfo(result); } } } catch (err) { const abortError = err; if (abortError.name !== "AbortError") { setMetaInfo({}); } } }; if (sourcePage === "template" && folderId) { fetchMetaInfo(); } return () => { isMounted = false; if (abortControllerRef.current) { abortControllerRef.current.abort(); } }; }, [folderId, api, setMetaInfo, instance, sourcePage]); } export { useGetTemplateMetaInfo }; //# sourceMappingURL=useTemplatesMetaInfo.esm.js.map