diff --git a/app/auth/callback/page.tsx b/app/auth/callback/page.tsx index 0d452b7..363666a 100644 --- a/app/auth/callback/page.tsx +++ b/app/auth/callback/page.tsx @@ -5,6 +5,7 @@ import { useRouter, useSearchParams } from 'next/navigation' import { useAuth } from '@/lib/auth/context' import { AUTH_URL } from '@/lib/api/client' import { exchangeAuthCode, setSessionAction } from '@/app/actions/auth' +import LoadingOverlay from '@/components/LoadingOverlay' function AuthCallbackContent() { const router = useRouter() @@ -108,26 +109,12 @@ function AuthCallbackContent() { ) } - return ( -
-
-
-

Completing sign in...

-
-
- ) + return } export default function AuthCallback() { return ( - -
-
-

Loading...

-
- - }> + }> ) diff --git a/app/page.tsx b/app/page.tsx index f018fa8..3d58d0a 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -12,7 +12,7 @@ export default function HomePage() { const { user, loading } = useAuth() if (loading) { - return + return } if (!user) { @@ -91,7 +91,7 @@ export default function HomePage() { // * Wait for organization context before rendering SiteList to avoid "Organization Required" flash if (user && !user.org_id) { - return + return } return ( diff --git a/components/LoadingOverlay.tsx b/components/LoadingOverlay.tsx index 342cc27..9f6c9d6 100644 --- a/components/LoadingOverlay.tsx +++ b/components/LoadingOverlay.tsx @@ -6,11 +6,13 @@ import { createPortal } from 'react-dom' interface LoadingOverlayProps { logoSrc?: string title?: string + portal?: boolean } export default function LoadingOverlay({ logoSrc = "/ciphera_icon_no_margins.png", - title = "Pulse" + title = "Pulse", + portal = true }: LoadingOverlayProps) { const [mounted, setMounted] = useState(false) @@ -19,9 +21,7 @@ export default function LoadingOverlay({ return () => setMounted(false) }, []) - if (!mounted) return null - - return createPortal( + const content = (
@@ -36,7 +36,13 @@ export default function LoadingOverlay({
-
, - document.body +
) + + if (portal) { + if (!mounted) return null + return createPortal(content, document.body) + } + + return content }