'use client' import { useState, useEffect } from 'react' import AuthModal from './AuthModal' import RedeemPointsModal from './RedeemPointsModal' import LanguageSwitcher from './LanguageSwitcher' import { useI18n } from '@/lib/i18n' interface User { id: number username: string email: string referral_points?: number } export default function Nav() { const { t } = useI18n() const [user, setUser] = useState(null) const [showAuthModal, setShowAuthModal] = useState(false) const [showRedeemModal, setShowRedeemModal] = useState(false) const [loading, setLoading] = useState(true) const [mobileMenuOpen, setMobileMenuOpen] = useState(false) useEffect(() => { checkAuth() }, []) const checkAuth = async () => { try { const response = await fetch('/api/auth/session', { credentials: 'include', }) if (response.ok) { const data = await response.json() const userData = data.user // If user is logged in, fetch referral points if (userData) { try { const pointsResponse = await fetch('/api/referral-points', { credentials: 'include', }) if (pointsResponse.ok) { const pointsData = await pointsResponse.json() userData.referral_points = pointsData.referral_points } } catch (error) { console.error('Error fetching referral points:', error) } } setUser(userData) } } catch (error) { console.error('Error checking auth:', error) } finally { setLoading(false) } } const handleLogin = (loggedInUser: User) => { setUser(loggedInUser) setShowAuthModal(false) } const handleLogout = async () => { try { await fetch('/api/auth/logout', { method: 'POST', credentials: 'include', }) setUser(null) } catch (error) { console.error('Error logging out:', error) } } const handleRedeemSuccess = async () => { // Refresh points after successful redemption if (user) { try { const pointsResponse = await fetch('/api/referral-points', { credentials: 'include', }) if (pointsResponse.ok) { const pointsData = await pointsResponse.json() setUser({ ...user, referral_points: pointsData.referral_points }) } } catch (error) { console.error('Error fetching referral points:', error) } } } return ( <> setShowAuthModal(false)} onLogin={handleLogin} /> {user && user.referral_points !== undefined && ( setShowRedeemModal(false)} currentPoints={user.referral_points} onRedeemSuccess={handleRedeemSuccess} /> )} ) }