import { observer } from "mobx-react-lite"; import { Redirect } from "react-router-dom"; import { Preloader } from "@revoltchat/ui"; import { clientController } from "../../controllers/client/ClientController"; interface Props { auth?: boolean; blockRender?: boolean; children: Children; } /** * Check that we are logged in or out and redirect accordingly. * Also prevent render until the client is ready to display. */ export const CheckAuth = observer((props: Props) => { const loggedIn = clientController.isLoggedIn(); // Redirect if logged out on authenticated page or vice-versa. if (props.auth && !loggedIn) { if (props.blockRender) return null; return ; } else if (!props.auth && loggedIn) { if (props.blockRender) return null; return ; } // Block render if client is getting ready to work. if ( props.auth && clientController.isLoggedIn() && !clientController.isReady() ) { return ; } return <>{props.children}; });