import styles from './Dateien.module.css' import { IoAddCircleOutline } from "react-icons/io5"; import DateienUpload from '../../components/Dateien/DateienHinzufügen/DateienUploadTool'; import DateienAll from '../../components/Dateien/DateienAll'; import DateienUploads from '../../components/Dateien/DateienUploads'; import DateienCreated from '../../components/Dateien/DateienCreated'; import DateienShared from '../../components/Dateien/DateienShared'; import { useState } from 'react'; import { useUserFiles, useFileOperations } from '../../hooks/useFiles'; import { motion, AnimatePresence } from "framer-motion"; // Tab types type TabType = 'alle' | 'uploads' | 'erstellt' | 'geteilt'; function Dateien() { const { files, loading, error, refetch, removeFileOptimistically } = useUserFiles(); const [isUploadOpen, setIsUploadOpen] = useState(false); const { uploadError, downloadError, deleteError } = useFileOperations(); const [activeTab, setActiveTab] = useState('alle'); // Tab configuration const tabs = [ { key: 'alle' as TabType, label: 'Alle Dateien' }, { key: 'uploads' as TabType, label: 'Meine Uploads' }, { key: 'erstellt' as TabType, label: 'Erstellte Dateien' }, { key: 'geteilt' as TabType, label: 'Geteilte Dateien' } ]; // Single function to handle file refresh const refreshFiles = () => { console.log('Refreshing files list'); refetch(); }; const handleFileUpload = async (file: File) => { console.log('File upload completed:', file.name); }; const handleUploadClose = () => { setIsUploadOpen(false); // Refresh files when upload modal is closed setTimeout(() => { refreshFiles(); }, 300); }; const handleFileDeleted = () => { refreshFiles(); }; // Render the appropriate component based on active tab const renderActiveTabContent = () => { const commonProps = { files, onFileDeleted: handleFileDeleted, onOptimisticDelete: removeFileOptimistically }; switch (activeTab) { case 'alle': return ; case 'uploads': return ; case 'erstellt': return ; case 'geteilt': return ; default: return ; } }; return (
{/* Combined Header with Tabs and Add Button */}
{tabs.map((tab) => (
setActiveTab(tab.key)} whileHover={{ scale: 1.02 }} whileTap={{ scale: 0.98 }} > {tab.label} {activeTab === tab.key && ( )}
))}
{(uploadError || downloadError || deleteError) && (

{uploadError || downloadError || deleteError}

)} {loading &&

Loading files...

} {error &&

Error: {error}

} {!loading && !error && ( {renderActiveTabContent()} )}
); } export default Dateien;