@red-hat-developer-hub/backstage-plugin-bulk-import
Version:
78 lines (75 loc) • 2.47 kB
JavaScript
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