import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { Helmet } from 'react-helmet'; import { Container, Card, Typography, Box, CircularProgress } from '@mui/material'; // Components import Navbar from '../ComponentUtils/Headers/Navbar'; import Footer from '../ComponentUtils/Footer'; import ImageGallery from '../ComponentUtils/ImageGallery'; // Utils import { fetchAllGroups } from '../../Utils/batchUpload'; // Styles import '../../App.css'; function GroupsOverviewPage() { // use CSS classes from GroupsOverviewPage.css const navigate = useNavigate(); 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); } }; // previously had handleViewSlideshow but it was not used; removed to satisfy ESLint const handleViewGroup = (groupId) => { navigate(`/groups/${groupId}`); }; const handleCreateNew = () => { navigate('/multi-upload'); }; // removed unused local helpers (formatDate, handleGoHome) to clear ESLint warnings if (loading) { return (
Slideshows werden geladen...
); } return (
Gruppenübersicht - Interne Verwaltung {/* Header */} Alle Slideshows Übersicht aller erstellten Slideshows. {/* 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 handleViewGroup(group.groupId)} isPending={false} showActions={false} mode="group" /> )}
); } export default GroupsOverviewPage;