"use client"; import { useState, useEffect } from "react"; import { MessageSquare, Plus, Trash2 } from "lucide-react"; type Conversation = { id: string; title: string; model: string; updated_at: number; }; type ConversationSidebarProps = { currentConversationId: string | null; onSelectConversation: (id: string) => void; onNewConversation: () => void; refreshTrigger?: number; // Para forçar atualização }; export function ConversationSidebar({ currentConversationId, onSelectConversation, onNewConversation, refreshTrigger, }: ConversationSidebarProps) { const [conversations, setConversations] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { loadConversations(); }, []); // Recarregar conversas quando refreshTrigger mudar useEffect(() => { if (refreshTrigger !== undefined) { loadConversations(); } }, [refreshTrigger]); const loadConversations = async () => { try { const response = await fetch("/api/conversations"); const data = await response.json(); setConversations(data); } catch (error) { console.error("Erro ao carregar conversas:", error); } finally { setLoading(false); } }; const handleDelete = async (id: string, e: React.MouseEvent) => { e.stopPropagation(); if (!confirm("Deletar esta conversa?")) return; try { await fetch(`/api/conversations/${id}`, { method: "DELETE" }); setConversations((prev) => prev.filter((c) => c.id !== id)); if (currentConversationId === id) { onNewConversation(); } } catch (error) { console.error("Erro ao deletar conversa:", error); } }; return (
{/* Header */}
{/* Lista de Conversas */}
{loading ? (
Carregando...
) : conversations.length === 0 ? (
Nenhuma conversa ainda
) : ( conversations.map((conv) => (
onSelectConversation(conv.id)} className={`w-full flex items-center gap-2 p-3 rounded-lg mb-1 text-left transition-colors group cursor-pointer ${ currentConversationId === conv.id ? "bg-[var(--accent)]/10 text-[var(--accent)]" : "hover:bg-[var(--background)]" }`} > {conv.title}
)) )}
); }