// src/ModelOverview.jsx import React, { useEffect, useState } from "react"; export default function ModelOverview({ onBackToChat }) { const [defaultModel, setDefaultModel] = useState(""); const [modelInfo, setModelInfo] = useState([]); const [searchTerm, setSearchTerm] = useState(""); const [loading, setLoading] = useState(false); const fetchModelData = async () => { setLoading(true); try { const [defaultRes, infoRes] = await Promise.all([ fetch("/v1/default-model"), fetch("/v1/models-info") ]); const defaultText = await defaultRes.text(); const infoJson = await infoRes.json(); setDefaultModel(defaultText); setModelInfo(Array.isArray(infoJson) ? infoJson : []); } catch (err) { console.error("Errore nel caricamento modelli", err); } finally { setLoading(false); } }; const updateModelData = async () => { setLoading(true); try { const res = await fetch("/v1/models-info/update", { method: "POST" }); if (res.ok) { const updated = await res.json(); setModelInfo(Array.isArray(updated) ? updated : []); } } catch (err) { console.error("Errore nell'aggiornamento modelli", err); } finally { setLoading(false); } }; useEffect(() => { fetchModelData(); }, []); const filteredModels = modelInfo.filter((model) => model.name.toLowerCase().includes(searchTerm.toLowerCase()) ); return (

📌 Modello di default

{defaultModel || "Non disponibile"}

setSearchTerm(e.target.value)} />
{/**/} {loading && ( )} {!loading && filteredModels.length === 0 && ( )} {!loading && filteredModels.map((model) => ( {/**/} ))}
Nome DescrizioneAnnoCaratteristiche
Caricamento…
Nessun modello trovato
{model.name} {model.description || "—"}{model.year || "—"}
    {Array.isArray(model.features) && model.features.length > 0 ? model.features.map((f, i) =>
  • {f}
  • ) :
  • }
); }