'use client'; import { useState, useEffect } from 'react'; import { initializeOAuth, loginWithHuggingFace, loginDevMode, logout, getStoredUserInfo, isAuthenticated, isDevelopmentMode } from '@/lib/auth'; import { apiClient } from '@/lib/api'; import type { OAuthUserInfo } from '@/lib/auth'; export default function Header() { const [userInfo, setUserInfo] = useState(null); const [isLoading, setIsLoading] = useState(true); const [showDevLogin, setShowDevLogin] = useState(false); const [devUsername, setDevUsername] = useState(''); const isDevMode = isDevelopmentMode(); useEffect(() => { handleOAuthInit(); }, []); const handleOAuthInit = async () => { setIsLoading(true); try { const oauthResult = await initializeOAuth(); if (oauthResult) { setUserInfo(oauthResult.userInfo); // Set token in API client apiClient.setToken(oauthResult.accessToken); } else { // Check if we have stored user info const storedUserInfo = getStoredUserInfo(); if (storedUserInfo) { setUserInfo(storedUserInfo); } } } catch (error) { console.error('OAuth initialization error:', error); } finally { setIsLoading(false); } }; const handleLogin = async () => { try { await loginWithHuggingFace(); } catch (error) { console.error('Login failed:', error); alert('Failed to start login process. Please try again.'); } }; const handleLogout = () => { logout(); apiClient.logout(); setUserInfo(null); // Reload page to clear state window.location.reload(); }; const handleDevLogin = () => { if (!devUsername.trim()) { alert('Please enter a username'); return; } try { const result = loginDevMode(devUsername); setUserInfo(result.userInfo); apiClient.setToken(result.accessToken); setShowDevLogin(false); setDevUsername(''); } catch (error) { console.error('Dev login failed:', error); alert('Failed to login in dev mode'); } }; return (

AnyCoder

{isLoading ? (
Loading...
) : userInfo ? (
{userInfo.avatarUrl && ( {userInfo.name} )} {userInfo.preferredUsername || userInfo.name}
) : (
{/* Dev Mode Login (only on localhost) */} {isDevMode && ( <> {showDevLogin ? (
DEV setDevUsername(e.target.value)} onKeyPress={(e) => e.key === 'Enter' && handleDevLogin()} placeholder="username" className="px-3 py-1.5 rounded-lg text-xs bg-[#2c2c2e] text-[#e5e5e7] border border-[#48484a] focus:outline-none focus:ring-2 focus:ring-[#ff9f0a] focus:border-transparent w-28 font-medium" autoFocus />
) : ( )} or )} {/* OAuth Login */}
)}
); }