diff --git a/frontend/src/app/(dashboard)/admin/categories/page.tsx b/frontend/src/app/(dashboard)/admin/categories/page.tsx index a1acb88..8c29daf 100644 --- a/frontend/src/app/(dashboard)/admin/categories/page.tsx +++ b/frontend/src/app/(dashboard)/admin/categories/page.tsx @@ -1,6 +1,7 @@ "use client"; import { useEffect, useState } from "react"; +import { Skeleton } from "@/components/ui/skeleton"; import { Table, TableBody, @@ -11,7 +12,6 @@ import { } from "@/components/ui/table"; import { CategoryService } from "@/services/category.service"; import type { Category } from "@/types/content"; -import { Skeleton } from "@/components/ui/skeleton"; export default function AdminCategoriesPage() { const [categories, setCategories] = useState([]); @@ -20,14 +20,16 @@ export default function AdminCategoriesPage() { useEffect(() => { CategoryService.getAll() .then(setCategories) - .catch(err => console.error(err)) + .catch((err) => console.error(err)) .finally(() => setLoading(false)); }, []); return (
-

Catégories ({categories.length})

+

+ Catégories ({categories.length}) +

@@ -41,10 +43,17 @@ export default function AdminCategoriesPage() { {loading ? ( Array.from({ length: 5 }).map((_, i) => ( + /* biome-ignore lint/suspicious/noArrayIndexKey: skeleton items don't have unique IDs */ - - - + + + + + + + + + )) ) : categories.length === 0 ? ( @@ -56,7 +65,9 @@ export default function AdminCategoriesPage() { ) : ( categories.map((category) => ( - {category.name} + + {category.name} + {category.slug} {category.description || "Aucune description"} diff --git a/frontend/src/app/(dashboard)/admin/contents/page.tsx b/frontend/src/app/(dashboard)/admin/contents/page.tsx index f07d495..da21f71 100644 --- a/frontend/src/app/(dashboard)/admin/contents/page.tsx +++ b/frontend/src/app/(dashboard)/admin/contents/page.tsx @@ -1,6 +1,12 @@ "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, @@ -11,12 +17,6 @@ import { } from "@/components/ui/table"; import { ContentService } from "@/services/content.service"; import type { Content } from "@/types/content"; -import { Badge } from "@/components/ui/badge"; -import { format } from "date-fns"; -import { fr } from "date-fns/locale"; -import { Skeleton } from "@/components/ui/skeleton"; -import { Eye, Download, Image as ImageIcon, Video, Trash2 } from "lucide-react"; -import { Button } from "@/components/ui/button"; export default function AdminContentsPage() { const [contents, setContents] = useState([]); @@ -27,9 +27,9 @@ export default function AdminContentsPage() { ContentService.getExplore({ limit: 20 }) .then((res) => { setContents(res.data); - setTotalCount(res.total); + setTotalCount(res.totalCount); }) - .catch(err => console.error(err)) + .catch((err) => console.error(err)) .finally(() => setLoading(false)); }, []); @@ -38,8 +38,8 @@ export default function AdminContentsPage() { try { await ContentService.removeAdmin(id); - setContents(contents.filter(c => c.id !== id)); - setTotalCount(prev => prev - 1); + setContents(contents.filter((c) => c.id !== id)); + setTotalCount((prev) => prev - 1); } catch (error) { console.error(error); } @@ -48,7 +48,9 @@ export default function AdminContentsPage() { return (
-

Contenus ({totalCount})

+

+ Contenus ({totalCount}) +

@@ -65,12 +67,23 @@ export default function AdminContentsPage() { {loading ? ( Array.from({ length: 5 }).map((_, i) => ( + /* biome-ignore lint/suspicious/noArrayIndexKey: skeleton items don't have unique IDs */ - - - - - + + + + + + + + + + + + + + + )) ) : contents.length === 0 ? ( @@ -93,16 +106,18 @@ export default function AdminContentsPage() {
{content.title}
-
{content.type} • {content.mimeType}
+
+ {content.type} • {content.mimeType} +
- {content.category.name} - - - @{content.author.username} + + {content.category?.name || "Sans catégorie"} + + @{content.author.username}
diff --git a/frontend/src/app/(dashboard)/admin/page.tsx b/frontend/src/app/(dashboard)/admin/page.tsx index 1043e24..373bdf3 100644 --- a/frontend/src/app/(dashboard)/admin/page.tsx +++ b/frontend/src/app/(dashboard)/admin/page.tsx @@ -1,11 +1,11 @@ "use client"; +import { AlertCircle, FileText, LayoutGrid, Users } from "lucide-react"; +import Link from "next/link"; import { useEffect, useState } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; -import { adminService, type AdminStats } from "@/services/admin.service"; -import { Users, FileText, LayoutGrid, AlertCircle } from "lucide-react"; -import Link from "next/link"; import { Skeleton } from "@/components/ui/skeleton"; +import { type AdminStats, adminService } from "@/services/admin.service"; export default function AdminDashboardPage() { const [stats, setStats] = useState(null); diff --git a/frontend/src/app/(dashboard)/admin/users/page.tsx b/frontend/src/app/(dashboard)/admin/users/page.tsx index 48df000..1fdee58 100644 --- a/frontend/src/app/(dashboard)/admin/users/page.tsx +++ b/frontend/src/app/(dashboard)/admin/users/page.tsx @@ -1,6 +1,12 @@ "use client"; +import { format } from "date-fns"; +import { fr } from "date-fns/locale"; +import { Trash2 } 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, @@ -11,12 +17,6 @@ import { } from "@/components/ui/table"; import { UserService } from "@/services/user.service"; import type { User } from "@/types/user"; -import { Badge } from "@/components/ui/badge"; -import { format } from "date-fns"; -import { fr } from "date-fns/locale"; -import { Skeleton } from "@/components/ui/skeleton"; -import { Button } from "@/components/ui/button"; -import { Trash2 } from "lucide-react"; export default function AdminUsersPage() { const [users, setUsers] = useState([]); @@ -29,19 +29,24 @@ export default function AdminUsersPage() { setUsers(res.data); setTotalCount(res.totalCount); }) - .catch(err => { + .catch((err) => { console.error(err); }) .finally(() => setLoading(false)); }, []); const handleDelete = async (uuid: string) => { - if (!confirm("Êtes-vous sûr de vouloir supprimer cet utilisateur ? Cette action est irréversible.")) return; + if ( + !confirm( + "Êtes-vous sûr de vouloir supprimer cet utilisateur ? Cette action est irréversible.", + ) + ) + return; try { await UserService.removeUserAdmin(uuid); - setUsers(users.filter(u => u.uuid !== uuid)); - setTotalCount(prev => prev - 1); + setUsers(users.filter((u) => u.uuid !== uuid)); + setTotalCount((prev) => prev - 1); } catch (error) { console.error(error); } @@ -50,7 +55,9 @@ export default function AdminUsersPage() { return (
-

Utilisateurs ({totalCount})

+

+ Utilisateurs ({totalCount}) +

@@ -67,12 +74,23 @@ export default function AdminUsersPage() { {loading ? ( Array.from({ length: 5 }).map((_, i) => ( + /* biome-ignore lint/suspicious/noArrayIndexKey: skeleton items don't have unique IDs */ - - - - - + + + + + + + + + + + + + + + )) ) : users.length === 0 ? ( diff --git a/frontend/src/app/(dashboard)/help/page.tsx b/frontend/src/app/(dashboard)/help/page.tsx index 53f66b3..a07d148 100644 --- a/frontend/src/app/(dashboard)/help/page.tsx +++ b/frontend/src/app/(dashboard)/help/page.tsx @@ -1,10 +1,10 @@ +import { HelpCircle } from "lucide-react"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; -import { HelpCircle } from "lucide-react"; export default function HelpPage() { const faqs = [ @@ -48,10 +48,8 @@ export default function HelpPage() {

Foire Aux Questions

{faqs.map((faq, index) => ( - - - {faq.question} - + + {faq.question} {faq.answer} diff --git a/frontend/src/app/(dashboard)/profile/page.tsx b/frontend/src/app/(dashboard)/profile/page.tsx index 3eda480..daf04fb 100644 --- a/frontend/src/app/(dashboard)/profile/page.tsx +++ b/frontend/src/app/(dashboard)/profile/page.tsx @@ -4,6 +4,7 @@ import { Calendar, Camera, LogIn, LogOut, Settings } from "lucide-react"; import Link from "next/link"; import { useSearchParams } from "next/navigation"; import * as React from "react"; +import { toast } from "sonner"; import { ContentList } from "@/components/content-list"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; @@ -20,7 +21,6 @@ import { useAuth } from "@/providers/auth-provider"; import { ContentService } from "@/services/content.service"; import { FavoriteService } from "@/services/favorite.service"; import { UserService } from "@/services/user.service"; -import { toast } from "sonner"; export default function ProfilePage() { const { user, isAuthenticated, isLoading, logout, refreshUser } = useAuth(); @@ -32,7 +32,9 @@ export default function ProfilePage() { fileInputRef.current?.click(); }; - const handleFileChange = async (event: React.ChangeEvent) => { + const handleFileChange = async ( + event: React.ChangeEvent, + ) => { const file = event.target.files?.[0]; if (!file) return; diff --git a/frontend/src/app/(dashboard)/recent/page.tsx b/frontend/src/app/(dashboard)/recent/page.tsx index fd5aedc..a82ba89 100644 --- a/frontend/src/app/(dashboard)/recent/page.tsx +++ b/frontend/src/app/(dashboard)/recent/page.tsx @@ -9,7 +9,11 @@ export const metadata: Metadata = { export default function RecentPage() { return ( - Chargement des nouveautés...}> + Chargement des nouveautés... + } + > ); diff --git a/frontend/src/app/(dashboard)/settings/page.tsx b/frontend/src/app/(dashboard)/settings/page.tsx index 6a3809d..f5e56ea 100644 --- a/frontend/src/app/(dashboard)/settings/page.tsx +++ b/frontend/src/app/(dashboard)/settings/page.tsx @@ -24,8 +24,8 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { Textarea } from "@/components/ui/textarea"; import { Spinner } from "@/components/ui/spinner"; +import { Textarea } from "@/components/ui/textarea"; import { useAuth } from "@/providers/auth-provider"; import { UserService } from "@/services/user.service"; @@ -52,7 +52,7 @@ export default function SettingsPage() { if (user) { form.reset({ displayName: user.displayName || "", - bio: (user as any).bio || "", + bio: user.bio || "", }); } }, [user, form]); @@ -107,7 +107,8 @@ export default function SettingsPage() { Informations personnelles - Mettez à jour vos informations publiques. Ces données seront visibles par les autres utilisateurs. + Mettez à jour vos informations publiques. Ces données seront visibles par + les autres utilisateurs. @@ -117,7 +118,11 @@ export default function SettingsPage() { Nom d'utilisateur - + Le nom d'utilisateur ne peut pas être modifié. diff --git a/frontend/src/app/(dashboard)/trends/page.tsx b/frontend/src/app/(dashboard)/trends/page.tsx index b443e8c..194e792 100644 --- a/frontend/src/app/(dashboard)/trends/page.tsx +++ b/frontend/src/app/(dashboard)/trends/page.tsx @@ -9,7 +9,9 @@ export const metadata: Metadata = { export default function TrendsPage() { return ( - Chargement des tendances...}> + Chargement des tendances...} + > );