'use client' import { useState, useEffect } from 'react'; import { FilamentTable } from '../src/components/FilamentTable'; import { FilamentTableV2 } from '../src/components/FilamentTableV2'; import { Filament } from '../src/types/filament'; import axios from 'axios'; export default function Home() { const [filaments, setFilaments] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [lastUpdate, setLastUpdate] = useState(null); const [darkMode, setDarkMode] = useState(false); const [mounted, setMounted] = useState(false); const [useV2, setUseV2] = useState(true); // Default to new UI // Initialize dark mode from localStorage after mounting useEffect(() => { setMounted(true); const saved = localStorage.getItem('darkMode'); if (saved) { setDarkMode(JSON.parse(saved)); } }, []); // Update dark mode useEffect(() => { if (!mounted) return; localStorage.setItem('darkMode', JSON.stringify(darkMode)); if (darkMode) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } }, [darkMode, mounted]); const fetchFilaments = async () => { try { setLoading(true); setError(null); const apiUrl = process.env.NEXT_PUBLIC_API_URL; if (!apiUrl) { throw new Error('API URL not configured'); } const url = `${apiUrl}/filaments`; const headers = useV2 ? { 'X-Accept-Format': 'v2' } : {}; const response = await axios.get(url, { headers }); setFilaments(response.data); setLastUpdate(new Date()); } catch (err) { console.error('API Error:', err); if (axios.isAxiosError(err)) { setError(`API Error: ${err.response?.status || 'Network'} - ${err.message}`); } else { setError(err instanceof Error ? err.message : 'Greška pri učitavanju filamenata'); } } finally { setLoading(false); } }; useEffect(() => { fetchFilaments(); // Refresh every 5 minutes const interval = setInterval(fetchFilaments, 5 * 60 * 1000); return () => clearInterval(interval); }, []); return (

Filamenteka

{lastUpdate && ( Poslednje ažuriranje: {lastUpdate.toLocaleTimeString('sr-RS')} )} {mounted && ( <> )}
{useV2 ? ( ) : ( )}
); }