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 (