"use client"; import { format } from "date-fns"; import { fr } from "date-fns/locale"; import { Download, Eye, Image as ImageIcon, Trash2, Video } from "lucide-react"; import { useEffect, useState } from "react"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Skeleton } from "@/components/ui/skeleton"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { ContentService } from "@/services/content.service"; import type { Content } from "@/types/content"; export default function AdminContentsPage() { const [contents, setContents] = useState([]); const [loading, setLoading] = useState(true); const [totalCount, setTotalCount] = useState(0); useEffect(() => { ContentService.getExplore({ limit: 20 }) .then((res) => { setContents(res.data); setTotalCount(res.totalCount); }) .catch((err) => console.error(err)) .finally(() => setLoading(false)); }, []); const handleDelete = async (id: string) => { if (!confirm("Êtes-vous sûr de vouloir supprimer ce contenu ?")) return; try { await ContentService.removeAdmin(id); setContents(contents.filter((c) => c.id !== id)); setTotalCount((prev) => prev - 1); } catch (error) { console.error(error); } }; return (

Contenus ({totalCount})

Contenu Catégorie Auteur Stats Date {loading ? ( Array.from({ length: 5 }).map((_, i) => ( /* biome-ignore lint/suspicious/noArrayIndexKey: skeleton items don't have unique IDs */ )) ) : contents.length === 0 ? ( Aucun contenu trouvé. ) : ( contents.map((content) => (
{content.type === "meme" ? ( ) : (
{content.title}
{content.type} • {content.mimeType}
{content.category?.name || "Sans catégorie"} @{content.author.username}
{content.views}
{content.usageCount}
{format(new Date(content.createdAt), "dd/MM/yyyy", { locale: fr })}
)) )}
); }