UNPKG

@janus-idp/shared-react

Version:

Shared code for utils, types, and React components for the Janus frontend plugins.

61 lines (55 loc) 2 kB
'use strict'; var React = require('react'); var useAsyncRetry = require('react-use/esm/useAsyncRetry'); var useInterval = require('react-use/esm/useInterval'); var corePluginApi = require('@backstage/core-plugin-api'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } var useAsyncRetry__default = /*#__PURE__*/_interopDefaultCompat(useAsyncRetry); var useInterval__default = /*#__PURE__*/_interopDefaultCompat(useInterval); const generateAuth = async (entity, kubernetesApi, kubernetesAuthProvidersApi) => { const clusters = await kubernetesApi.getClusters(); const authProviders = [ ...new Set( clusters.map( (c) => `${c.authProvider}${c.oidcTokenProvider ? `.${c.oidcTokenProvider}` : ""}` ) ) ]; let requestBody = { entity }; for (const authProviderStr of authProviders) { requestBody = await kubernetesAuthProvidersApi.decorateRequestBodyForAuth( authProviderStr, requestBody ); } return requestBody.auth ?? {}; }; const useKubernetesObjects = (entity, kubernetesApiRef, kubernetesAuthProvidersApiRef, intervalMs = 1e4) => { const kubernetesApi = corePluginApi.useApi(kubernetesApiRef); const kubernetesAuthProvidersApi = corePluginApi.useApi(kubernetesAuthProvidersApiRef); const getObjects = React.useCallback(async () => { const auth = await generateAuth( entity, kubernetesApi, kubernetesAuthProvidersApi ); return await kubernetesApi.getObjectsByEntity({ auth, entity }); }, [kubernetesApi, entity, kubernetesAuthProvidersApi]); const { value, loading, error, retry } = useAsyncRetry__default.default( () => getObjects(), [getObjects] ); useInterval__default.default(() => retry(), intervalMs); return { kubernetesObjects: value, loading, error: error?.message }; }; exports.useKubernetesObjects = useKubernetesObjects; //# sourceMappingURL=useKubernetesObjects.cjs.js.map