vkashti / components / ui / NavbarClient.tsx
NavbarClient.tsx
Raw
'use client';

import { useEffect, useState } from 'react';
import { createClient } from '@/utils/supabase/client';
import Navlinks from './Navbar/Navlinks';
import { User } from '@supabase/supabase-js';
import { usePathname } from 'next/navigation';

export default function NavbarClient() {
  const [user, setUser] = useState<User | null>(null);
  const [loading, setLoading] = useState(true);
  const pathname = usePathname();
  
  useEffect(() => {
    const fetchUser = async () => {
      try {
        const supabase = createClient();
        const { data } = await supabase.auth.getUser();
        setUser(data.user);
      } catch (error) {
        console.error('Error fetching user:', error);
      } finally {
        setLoading(false);
      }
    };
    
    fetchUser();
  }, []);
  
  // Don't show navbar on admin pages
  if (pathname?.startsWith('/admin')) {
    return null;
  }
  
  if (loading) {
    return <div className="h-16 bg-background"></div>;
  }
  
  return <Navlinks user={user} />;
}