// src/components/LayoutWrapper.tsx 'use client' import React, { ReactNode, useEffect, useState } from 'react' import { usePathname, useRouter } from 'next/navigation' import Link from 'next/link' import Image from 'next/image' import Script from 'next/script' import { useLocale } from '../contexts/LocaleContext' import ThemeToggle from './ThemeToggle' import LanguageSelector from './LanguageSelector' import '../layout.css' interface User { id: number username: string email: string full_name: string avatar: string | null } export function LayoutWrapper({ children }: { children: ReactNode }) { const pathname = usePathname() || '' const isPublicUserPage = /^\/[^\/]+$/.test(pathname) const [user, setUser] = useState(null) const [isLoading, setIsLoading] = useState(true) const router = useRouter() const { t } = useLocale() useEffect(() => { const checkAuth = async () => { const token = localStorage.getItem('token') if (token) { try { const response = await fetch('/api/auth/user', { headers: { Authorization: `Bearer ${token}` }, }) if (response.ok) { const data = await response.json() setUser({ id: data.id, username: data.username, email: data.email, full_name: data.full_name || '', avatar: data.avatar }) } else { localStorage.removeItem('token') setUser(null) } } catch (error) { console.error('Auth check failed:', error) localStorage.removeItem('token') setUser(null) } } setIsLoading(false) } checkAuth() }, []) const handleLogout = () => { if (typeof window !== 'undefined') { localStorage.removeItem('token') } setUser(null) router.push('/') } return ( <> {!isPublicUserPage && ( )} {!isPublicUserPage &&
} {children} {!isPublicUserPage && (
  • {t('footer.about')}
  • {t('footer.contact')}

{t('footer.copyright')}

)}