UNPKG

@red-hat-developer-hub/backstage-plugin-bulk-import

Version:
72 lines (69 loc) 2.28 kB
import { useMemo } from 'react'; import { useAsync } from 'react-use'; import { useApi, identityApiRef, configApiRef } from '@backstage/core-plugin-api'; import { useQuery } from '@tanstack/react-query'; import { useFormikContext } from 'formik'; import { bulkImportApiRef } from '../api/BulkImportBackendClient.esm.js'; import { prepareDataForAddedRepositories } from '../utils/repository-utils.esm.js'; const useAddedRepositories = (pageNumber, rowsPerPage, searchString, sortColumn, sortOrder, pollInterval) => { const identityApi = useApi(identityApiRef); const configApi = useApi(configApiRef); const { value: user } = useAsync(async () => { const identityRef = await identityApi.getBackstageIdentity(); return identityRef.userEntityRef; }); const baseUrl = configApi.getString("app.baseUrl"); const bulkImportApi = useApi(bulkImportApiRef); const { setFieldValue, values } = useFormikContext(); const fetchAddedRepositories = async (page, size, searchStr, sortCol, sortOrd) => await bulkImportApi.getImportJobs(page, size, searchStr, sortCol, sortOrd); const { data: value, error, isLoading: isLoadingTable, refetch } = useQuery( [ "importJobs", pageNumber, rowsPerPage, searchString, sortColumn, sortOrder ], () => fetchAddedRepositories( pageNumber, rowsPerPage, searchString, sortColumn, sortOrder ), { refetchInterval: 6e4, refetchOnWindowFocus: false } ); const prepareData = useMemo(() => { const repoData = prepareDataForAddedRepositories( value, user, baseUrl ); if (Object.values(repoData.repoData).length !== Object.values(values.repositories).length) setFieldValue(`repositories`, repoData.repoData); return { addedRepositories: Object.values(repoData.repoData), totalJobs: repoData.totalJobs }; }, [value, user, baseUrl, values.repositories, setFieldValue]); return { data: prepareData, loading: isLoadingTable, error: { ...error ?? {}, ...value?.statusText ? { name: "Error", message: value?.statusText } : {} }, refetch }; }; export { useAddedRepositories }; //# sourceMappingURL=useAddedRepositories.esm.js.map