import React, { useState, useEffect } from 'react'; import { useHistory } from 'react-router-dom'; import { Helmet } from 'react-helmet'; import '../Pages/Css/GroupsOverviewPage.css'; import { Container, Card, CardContent, Typography, Button, Grid, CardMedia, Box, CircularProgress, Chip } from '@material-ui/core'; import { Slideshow as SlideshowIcon, Add as AddIcon, Home as HomeIcon } from '@material-ui/icons'; import Swal from 'sweetalert2/dist/sweetalert2.js'; // Components import Navbar from '../ComponentUtils/Headers/Navbar'; import Footer from '../ComponentUtils/Footer'; // Utils import { fetchAllGroups, deleteGroup } from '../../Utils/batchUpload'; // Styles import '../../App.css'; function GroupsOverviewPage() { // use CSS classes from GroupsOverviewPage.css const history = useHistory(); const [groups, setGroups] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { loadGroups(); }, []); const loadGroups = async () => { try { setLoading(true); const response = await fetchAllGroups(); setGroups(response.groups || []); setError(null); } catch (err) { setError(err.message); console.error('Error loading groups:', err); } finally { setLoading(false); } }; const handleViewSlideshow = (groupId) => { history.push(`/slideshow/${groupId}`); }; const handleCreateNew = () => { history.push('/multi-upload'); }; const handleGoHome = () => { history.push('/'); }; const formatDate = (dateString) => { return new Date(dateString).toLocaleDateString('de-DE', { year: 'numeric', month: 'short', day: 'numeric' }); }; if (loading) { return (
Slideshows werden geladen...
); } return (
Gruppenübersicht - Interne Verwaltung {/* Header */} 🎬 Alle Slideshows Verwalten Sie Ihre hochgeladenen Bildersammlungen
{/* Groups Grid */} {error ? (
😕 Fehler beim Laden {error}
) : groups.length === 0 ? (
📸 Keine Slideshows vorhanden Erstellen Sie Ihre erste Slideshow, indem Sie mehrere Bilder hochladen.
) : ( <> 📊 {groups.length} Slideshow{groups.length !== 1 ? 's' : ''} gefunden {groups.map((group) => ( {group.images && group.images.length > 0 && ( )} {group.description || 'Unbenannte Slideshow'} 📅 {formatDate(group.uploadDate)} • 📸 {group.images?.length || 0} Bilder
))}
)}
); } export default GroupsOverviewPage;