diff --git a/src/App.jsx b/src/App.jsx index 301773a..b52371d 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -50,34 +50,10 @@ const LayoutWrapper = ({ children, currentPageName }) => Layout ? {children} : <>{children}; -// Routes that render for anyone, signed in or not. LandingPage is pure marketing -// markup — it reads no entities and never touches useAuth — so the only thing the -// auth gate ever did for it was bounce visitors to a Google login before they -// could read what the product is. Its CTAs point at /Dashboard, which is still -// gated, so signing in stays one click away. -const PUBLIC_ROUTES = new Set(['/LandingPage']); - -const isPublicRoute = (pathname) => { - // Tolerate a trailing slash so /LandingPage/ isn't quietly sent to login. - const normalized = pathname.length > 1 ? pathname.replace(/\/+$/, '') : pathname; - return PUBLIC_ROUTES.has(normalized); -}; - const AuthenticatedApp = () => { const { isLoadingAuth, isLoadingPublicSettings, authError, isAuthenticated, navigateToLogin } = useAuth(); const location = useLocation(); - // Ahead of both gates below. The spinner would stall this page on a network - // round-trip it has no use for, and the auth gate would redirect away from it — - // either one defeats the point of a public page. - if (isPublicRoute(location.pathname)) { - return ( - - } /> - - ); - } - // Show loading spinner while checking app public settings or auth if (isLoadingPublicSettings || isLoadingAuth) { return ( @@ -116,6 +92,14 @@ const AuthenticatedApp = () => { // Render the main app + if (location.pathname === '/LandingPage') { + return ( + + } /> + + ); + } + return (