import React from 'react';
import {PageError} from '../../components/Errors/PageError/PageError';
import {LoaderWrapper} from '../../components/LoaderWrapper/LoaderWrapper';
import {authenticationApi} from '../../store/reducers/authentication/authentication';
import {uiFactory} from '../../uiFactory/uiFactory';
import {useDatabaseFromQuery} from '../../utils/hooks/useDatabaseFromQuery';
import {useMetaAuth} from '../../utils/hooks/useMetaAuth';
import {useAppTitle} from '../App/AppTitleContext';
import {SettingsBootstrap} from '../App/SettingsBootstrap';
import {useHandleVisibilityChange} from './useHandleVisibilityChange';
export function GetUser({
children,
useMeta,
// Allow content on databases home tab to be displayed even when whoami responds with an error
displayWhoamiError = true,
}: {
children: React.ReactNode;
useMeta?: boolean;
displayWhoamiError?: boolean;
}) {
const database = useDatabaseFromQuery();
const {isFetching, error, refetch} = authenticationApi.useWhoamiQuery({
database,
useMeta,
});
useHandleVisibilityChange(refetch);
const {appTitle} = useAppTitle();
const errorToDisplay = displayWhoamiError ? error : undefined;
const errorProps = errorToDisplay ? {...uiFactory.clusterOrDatabaseAccessError} : undefined;
return (
{children}
);
}
export function GetMetaUser({
children,
displayWhoamiError,
}: {
children: React.ReactNode;
displayWhoamiError?: boolean;
}) {
const metaAuth = useMetaAuth();
if (metaAuth) {
return (
{children}
);
}
return children;
}