import React from 'react'; import toast from '@/utils/toast'; import { FileDetailsView } from '../FileDetailsView'; import { AutoMetadataDetectionModal } from '@/components/library/AutoMetadataDetectionModal'; import { WatermarkSettingsModal } from '@/components/library/WatermarkSettingsModal'; import { useFileManagerView } from './useFileManagerView'; import { FileManagerViewHeader } from './FileManagerViewHeader'; import { FileManagerViewToolbar } from './FileManagerViewToolbar'; import { FileManagerViewTable } from './FileManagerViewTable'; import { FileManagerViewGrid } from './FileManagerViewGrid'; import { FileManagerViewEmpty } from './FileManagerViewEmpty'; import { FileManagerViewSkeleton } from './FileManagerViewSkeleton'; import type { FileNode } from './types'; export interface FileManagerViewProps { filesOverride?: FileNode[]; isLoading?: boolean; } export const FileManagerView: React.FC = (props) => { const { addToast } = useToast(); const { viewMode, setViewMode, searchQuery, setSearchQuery, selectedFiles, currentFolder, setCurrentFolder, selectedFileId, setSelectedFileId, showMetadataModal, setShowMetadataModal, showWatermarkModal, setShowWatermarkModal, filteredFiles, handleFileClick, toggleSelection, selectAll, handleBulkAction, files, isLoading, } = useFileManagerView({ filesOverride: props.filesOverride, isLoading: props.isLoading, }); if (isLoading) { return ; } if (selectedFileId) { return ( setSelectedFileId(null)} /> ); } return (
setCurrentFolder('Root')} viewMode={viewMode} onViewModeChange={setViewMode} onOpenMetadataModal={() => setShowMetadataModal(true)} onOpenWatermarkModal={() => setShowWatermarkModal(true)} /> handleBulkAction('Downloaded')} onBulkMove={() => handleBulkAction('Moved')} onBulkDelete={() => handleBulkAction('Deleted')} />
{filteredFiles.length === 0 ? ( ) : viewMode === 'list' ? ( ) : ( )}
{showMetadataModal && ( f.id === selectedFileId)?.name ?? 'Selected File' : 'Scan Library' } onClose={() => setShowMetadataModal(false)} onApply={(data) => { toast.success(`Applied: ${data.genre} - ${data.bpm}BPM`); setShowMetadataModal(false); }} /> )} {showWatermarkModal && ( setShowWatermarkModal(false)} onSave={() => toast.success('Watermark settings updated')} /> )}
); };