@digital-ai/plugin-dai-release
Version:
Frontend functionalities for the dai-release backstage plugin
53 lines (50 loc) • 1.67 kB
JavaScript
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