@digital-ai/plugin-dai-release
Version:
Frontend functionalities for the dai-release backstage plugin
49 lines (46 loc) • 1.61 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 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