UNPKG

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

Version:
78 lines (75 loc) 2.47 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 { bulkImportApiRef } from '../api/BulkImportBackendClient.esm.js'; import { prepareDataForOrganizations, prepareDataForRepositories } from '../utils/repository-utils.esm.js'; const useRepositories = (options, pollInterval) => { const identityApi = useApi(identityApiRef); const configApi = useApi(configApiRef); const bulkImportApi = useApi(bulkImportApiRef); const { value: user } = useAsync(async () => { const identityRef = await identityApi.getBackstageIdentity(); return identityRef.userEntityRef; }); const { value: baseUrl } = useAsync(async () => { const url = configApi.getString("app.baseUrl"); return url; }); const fetchRepositories = async (queryOptions) => { if (queryOptions?.showOrganizations) { return await bulkImportApi.dataFetcher( queryOptions?.page, queryOptions?.querySize, queryOptions?.searchString || "", { fetchOrganizations: true } ); } if (queryOptions?.orgName) { return await bulkImportApi.dataFetcher( queryOptions?.page, queryOptions?.querySize, queryOptions?.searchString || "", { orgName: queryOptions?.orgName } ); } return await bulkImportApi.dataFetcher( queryOptions?.page, queryOptions?.querySize, queryOptions?.searchString || "" ); }; const { data: value, error, isLoading: isQueryLoading } = useQuery( [options?.showOrganizations ? "organizations" : "repositories", options], () => fetchRepositories(options), { refetchInterval: 6e4, refetchOnWindowFocus: false } ); const prepareData = useMemo(() => { if (options?.showOrganizations) { return prepareDataForOrganizations(value); } return prepareDataForRepositories( value, user || "user:default/guest", baseUrl || "" ); }, [options?.showOrganizations, value, user, baseUrl]); return { loading: isQueryLoading, data: prepareData, error: { ...error ?? {}, ...value?.errors && value.errors.length > 0 || value?.statusText ? { errors: value?.errors || value?.statusText } : {} } }; }; export { useRepositories }; //# sourceMappingURL=useRepositories.esm.js.map