| 'use client'; |
|
|
| import { AppSidebar } from '@/components/dashboard/app-sidebar'; |
| import { SidebarProvider, SidebarInset } from '@/components/ui/sidebar'; |
| import { useUser } from '@/firebase'; |
| import { useRouter } from 'next/navigation'; |
| import { useEffect } from 'react'; |
| import { Skeleton } from '@/components/ui/skeleton'; |
|
|
| function AuthGuard({ children }: { children: React.ReactNode }) { |
| const { user, isUserLoading } = useUser(); |
| const router = useRouter(); |
|
|
| useEffect(() => { |
| if (!isUserLoading && !user) { |
| router.replace('/login'); |
| } |
| }, [isUserLoading, user, router]); |
|
|
| if (isUserLoading || !user) { |
| return ( |
| <div className="flex h-screen items-center justify-center"> |
| <div className="flex flex-col items-center gap-4"> |
| <Skeleton className="h-12 w-12 rounded-full" /> |
| <div className="space-y-2"> |
| <Skeleton className="h-4 w-[250px]" /> |
| <Skeleton className="h-4 w-[200px]" /> |
| </div> |
| </div> |
| </div> |
| ); |
| } |
|
|
| return <>{children}</>; |
| } |
|
|
| export default function DashboardLayout({ |
| children, |
| }: { |
| children: React.ReactNode; |
| }) { |
| return ( |
| <AuthGuard> |
| <SidebarProvider> |
| <AppSidebar /> |
| <SidebarInset>{children}</SidebarInset> |
| </SidebarProvider> |
| </AuthGuard> |
| ); |
| } |
|
|