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

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

// Client component version of Navbar that replicates server component functionality
export default function NavbarWrapper() {
  const [user, setUser] = useState<User | null>(null);
  const [loading, setLoading] = useState(true);
  
  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();
  }, []);
  
  return (
    <Suspense fallback={<div className="h-16 bg-background" />}>
      {loading ? (
        <div className="h-16 bg-background" />
      ) : (
        <Navlinks user={user} />
      )}
    </Suspense>
  );
}