import { Badge } from '../../../ui/badge'; import { Button } from '../../../ui/button'; import { Check, Clock, Edit2, Trash2, X } from 'lucide-react'; import type { TFunction } from 'i18next'; import { cn } from '../../../../lib/utils'; import { formatTimeAgo } from '../../../../utils/dateUtils'; import type { Project, ProjectSession, SessionProvider } from '../../../../types/app'; import type { SessionWithProvider, TouchHandlerFactory } from '../../types/types'; import { createSessionViewModel } from '../../utils/utils'; import SessionProviderLogo from '../../../llm-logo-provider/SessionProviderLogo'; type SidebarSessionItemProps = { project: Project; session: SessionWithProvider; selectedSession: ProjectSession | null; currentTime: Date; editingSession: string | null; editingSessionName: string; onEditingSessionNameChange: (value: string) => void; onStartEditingSession: (sessionId: string, initialName: string) => void; onCancelEditingSession: () => void; onSaveEditingSession: (projectName: string, sessionId: string, summary: string, provider: SessionProvider) => void; onProjectSelect: (project: Project) => void; onSessionSelect: (session: SessionWithProvider, projectName: string) => void; onDeleteSession: ( projectName: string, sessionId: string, sessionTitle: string, provider: SessionProvider, ) => void; touchHandlerFactory: TouchHandlerFactory; t: TFunction; }; export default function SidebarSessionItem({ project, session, selectedSession, currentTime, editingSession, editingSessionName, onEditingSessionNameChange, onStartEditingSession, onCancelEditingSession, onSaveEditingSession, onProjectSelect, onSessionSelect, onDeleteSession, touchHandlerFactory, t, }: SidebarSessionItemProps) { const sessionView = createSessionViewModel(session, currentTime, t); const isSelected = selectedSession?.id === session.id; const selectMobileSession = () => { onProjectSelect(project); onSessionSelect(session, project.name); }; const saveEditedSession = () => { onSaveEditingSession(project.name, session.id, editingSessionName, session.__provider); }; const requestDeleteSession = () => { onDeleteSession(project.name, session.id, sessionView.sessionName, session.__provider); }; return (