@janus-idp/shared-react
Version:
Shared code for utils, types, and React components for the Janus frontend plugins.
61 lines (55 loc) • 2 kB
JavaScript
;
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