diff --git a/src/containers/App/Content.tsx b/src/containers/App/Content.tsx
index f56c9dd047..4b5b23745e 100644
--- a/src/containers/App/Content.tsx
+++ b/src/containers/App/Content.tsx
@@ -14,6 +14,7 @@ import routes, {getClusterPath} from '../../routes';
import type {RootState} from '../../store';
import {authenticationApi} from '../../store/reducers/authentication/authentication';
import {
+ useAllCapabilitiesLoaded,
useCapabilitiesQuery,
useClusterWithoutAuthInUI,
useMetaCapabilitiesLoaded,
@@ -235,11 +236,10 @@ function GetNodesList() {
}
function GetCapabilities({children}: {children: React.ReactNode}) {
- const {data, error} = useCapabilitiesQuery();
+ const {error} = useCapabilitiesQuery();
useMetaCapabilitiesQuery();
- // It is always true if there is no meta, since request finishes with an error
- const metaCapabilitiesLoaded = useMetaCapabilitiesLoaded();
+ const capabilitiesLoaded = useAllCapabilitiesLoaded();
//do nothing, authentication is in progress upon redirect
if (isRedirectToAuth(error)) {
@@ -250,10 +250,8 @@ function GetCapabilities({children}: {children: React.ReactNode}) {
return ;
}
- const capabilitiesLoaded = Boolean(data || error);
-
return (
-
+
{children}
);
diff --git a/src/containers/Header/Header.tsx b/src/containers/Header/Header.tsx
index 4b0cee50c6..60e795ec50 100644
--- a/src/containers/Header/Header.tsx
+++ b/src/containers/Header/Header.tsx
@@ -19,6 +19,7 @@ import {checkIsClustersPage, checkIsTenantPage, getClusterPath} from '../../rout
import {environment} from '../../store';
import {
useAddClusterFeatureAvailable,
+ useAllCapabilitiesLoaded,
useDatabasesAvailable,
useDeleteDatabaseFeatureAvailable,
useEditDatabaseFeatureAvailable,
@@ -50,6 +51,7 @@ import './Header.scss';
const b = cn('header');
function Header() {
+ const capabilitiesLoaded = useAllCapabilitiesLoaded();
const {page, pageBreadcrumbsOptions} = useTypedSelector((state) => state.header);
const singleClusterMode = useTypedSelector((state) => state.singleClusterMode);
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
@@ -242,9 +244,12 @@ function Header() {
return null;
};
- const renderHeader = () => {
+ const renderContent = () => {
+ if (!capabilitiesLoaded) {
+ return null;
+ }
return (
-
+
{breadcrumbItems.map((item, index) => {
const {icon, text, link} = item;
@@ -268,9 +273,13 @@ function Header() {
{renderRightControls()}
-
+
);
};
+
+ const renderHeader = () => {
+ return ;
+ };
return renderHeader();
}
diff --git a/src/store/reducers/capabilities/hooks.ts b/src/store/reducers/capabilities/hooks.ts
index a0506a524c..6bd760517a 100644
--- a/src/store/reducers/capabilities/hooks.ts
+++ b/src/store/reducers/capabilities/hooks.ts
@@ -30,6 +30,14 @@ export function useCapabilitiesLoaded() {
return Boolean(data || error);
}
+export function useAllCapabilitiesLoaded() {
+ // It is always true if there is no meta, since request finishes with an error
+ const metaCapabilitiesLoaded = useMetaCapabilitiesLoaded();
+ const capabilitiesLoaded = useCapabilitiesLoaded();
+
+ return metaCapabilitiesLoaded && capabilitiesLoaded;
+}
+
const useGetFeatureVersion = (feature: Capability) => {
const database = useDatabaseFromQuery();