mod-arch-core
Version:
Core functionality and API utilities for modular architecture micro-frontend projects
34 lines • 1.5 kB
JavaScript
import * as React from 'react';
import { useFetchState } from '../utilities/useFetchState';
import { getNamespaces } from '../api/k8s';
import { DeploymentMode } from '../utilities';
import { useModularArchContext } from './useModularArchContext';
// Create a version that accepts config directly (for use in context provider)
export const useNamespacesWithConfig = (config) => {
const { BFF_API_VERSION, URL_PREFIX, deploymentMode, mandatoryNamespace } = config;
const modArchConfig = React.useMemo(() => ({
BFF_API_VERSION,
URL_PREFIX,
}), [BFF_API_VERSION, URL_PREFIX]);
const listNamespaces = React.useMemo(() => getNamespaces('', modArchConfig), [modArchConfig]);
const callback = React.useCallback((opts) => {
// If mandatory namespace is set, return only that namespace
if (mandatoryNamespace) {
return Promise.resolve([{ name: mandatoryNamespace }]);
}
if (deploymentMode === DeploymentMode.Kubeflow) {
return Promise.resolve([]);
}
return listNamespaces({
...opts,
});
}, [deploymentMode, listNamespaces, mandatoryNamespace]);
return useFetchState(callback, [], { initialPromisePurity: true });
};
// Regular hook that uses context (for use in components)
const useNamespaces = () => {
const { config } = useModularArchContext();
return useNamespacesWithConfig(config);
};
export default useNamespaces;
//# sourceMappingURL=useNamespaces.js.map