UNPKG

mod-arch-core

Version:

Core functionality and API utilities for modular architecture micro-frontend projects

34 lines 1.5 kB
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