import { FC, ReactNode, useState, useEffect } from 'react' import { observer } from 'mobx-react-lite' import { useRouter } from 'next/router' import { useStore, withAuth } from 'hooks' import BaseLayout from '../' import Error from 'components/ui/Error' import ProductMenu from 'components/ui/ProductMenu' import { generateAuthMenu } from './AuthLayout.utils' interface Props { title?: string children: ReactNode } const AuthLayout: FC = ({ title, children }) => { const { ui, meta } = useStore() const { isInitialized, isLoading, error } = meta.tables const projectRef = ui.selectedProject?.ref ?? 'default' const router = useRouter() const page = router.pathname.split('/')[4] const [loaded, setLoaded] = useState(isInitialized) useEffect(() => { if (ui.selectedProject?.ref) { meta.policies.load() meta.tables.load() meta.roles.load() } }, [ui.selectedProject?.ref]) useEffect(() => { if (!isLoading && !loaded) { setLoaded(true) } }, [isLoading]) if (error) { return ( ) } return ( } >
{children}
) } export default withAuth(observer(AuthLayout))