"use client" import { useEffect } from "react" import { usePathname, useRouter, useSearchParams } from "next/navigation" import { useAuth } from "@lib/auth-context" import { Loader2 } from "lucide-react" function WorkspaceLoadingShell() { return (
) } export function EnsureWorkspace({ children }: { children: React.ReactNode }) { const pathname = usePathname() const router = useRouter() const searchParams = useSearchParams() const { session, organizations, isRestoring } = useAuth() const isMcpPublicPage = searchParams.get("view") === "mcp" const isOnboarding = pathname.startsWith("/onboarding") useEffect(() => { if (isMcpPublicPage) return if (isRestoring) return if (!session) { router.replace( `/login?redirect=${encodeURIComponent(window.location.href)}`, ) return } if (organizations === null) return if (organizations.length > 0) return if (isOnboarding) return router.replace("/onboarding") }, [ session, organizations, isRestoring, isOnboarding, router, isMcpPublicPage, ]) const showLoading = !isMcpPublicPage && (isRestoring || (!session && !isRestoring) || (session && organizations === null) || (session && organizations !== null && organizations.length === 0 && !isOnboarding)) if (showLoading) { return } return children }