import { useEffect, useState } from "react"; import { useFileStore } from "@/stores/fileStore"; import { api } from "@/services/api"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { FilesTab } from "./FilesTab"; import { DashboardTab } from "./DashboardTab"; import { ChatTab } from "./ChatTab"; import { CheckCircle2, AlertCircle, Loader2, } from "lucide-react"; interface DataroomViewProps { onProcessingChange?: (isProcessing: boolean) => void; } export function DataroomView({ onProcessingChange }: DataroomViewProps = {}) { const { selectedTema, files } = useFileStore(); // Collection status states const [isCheckingCollection, setIsCheckingCollection] = useState(false); const [collectionExists, setCollectionExists] = useState( null, ); const [collectionError, setCollectionError] = useState(null); const [processing, setProcessing] = useState(false); // Check collection status when tema changes useEffect(() => { checkCollectionStatus(); }, [selectedTema]); // Load files when tema changes useEffect(() => { loadFiles(); }, [selectedTema]); const checkCollectionStatus = async () => { if (!selectedTema) { setCollectionExists(null); return; } setIsCheckingCollection(true); setCollectionError(null); try { const result = await api.checkCollectionExists(selectedTema); setCollectionExists(result.exists); } catch (err) { console.error("Error checking collection:", err); setCollectionError( err instanceof Error ? err.message : "Error al verificar colección", ); setCollectionExists(null); } finally { setIsCheckingCollection(false); } }; const handleCreateCollection = async () => { if (!selectedTema) return; setIsCheckingCollection(true); setCollectionError(null); try { const result = await api.createCollection(selectedTema); if (result.success) { setCollectionExists(true); console.log(`Collection "${selectedTema}" created successfully`); } } catch (err) { console.error("Error creating collection:", err); setCollectionError( err instanceof Error ? err.message : "Error al crear colección", ); } finally { setIsCheckingCollection(false); } }; const loadFiles = async () => { // This will be handled by FilesTab component }; const handleProcessingChange = (isProcessing: boolean) => { setProcessing(isProcessing); onProcessingChange?.(isProcessing); }; const totalFiles = files.length; return (

{selectedTema ? `Dataroom: ${selectedTema}` : "Selecciona un dataroom"}

{/* Collection Status Indicator */} {selectedTema && (
{isCheckingCollection ? ( <> Verificando... ) : collectionExists === true ? ( <> Colección disponible ) : collectionExists === false ? ( <> ) : collectionError ? ( <> Error de conexión ) : null}
)}

{selectedTema ? `${totalFiles} archivo${totalFiles !== 1 ? "s" : ""}` : "Selecciona un dataroom de la barra lateral para ver sus archivos"}

Overview Files Chat
); }