"use client"; 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"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Spinner } from "@/components/ui/spinner"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { useAuth } from "@/providers/auth-provider"; import { ContentService } from "@/services/content.service"; import { FavoriteService } from "@/services/favorite.service"; import { UserService } from "@/services/user.service"; export default function ProfilePage() { const { user, isAuthenticated, isLoading, logout, refreshUser } = useAuth(); const searchParams = useSearchParams(); const tab = searchParams.get("tab") || "memes"; const fileInputRef = React.useRef(null); const handleAvatarClick = () => { fileInputRef.current?.click(); }; const handleFileChange = async ( event: React.ChangeEvent, ) => { const file = event.target.files?.[0]; if (!file) return; try { await UserService.updateAvatar(file); toast.success("Avatar mis à jour avec succès !"); await refreshUser?.(); } catch (error) { console.error(error); toast.error("Erreur lors de la mise à jour de l'avatar."); } }; const fetchMyMemes = React.useCallback( (params: { limit: number; offset: number }) => ContentService.getExplore({ ...params, author: user?.username }), [user?.username], ); const fetchMyFavorites = React.useCallback( (params: { limit: number; offset: number }) => FavoriteService.list(params), [], ); if (isLoading) { return (
); } if (!isAuthenticated || !user) { return (
Profil inaccessible Vous devez être connecté pour voir votre profil, vos mèmes et vos favoris.
); } return (
{user.username.slice(0, 2).toUpperCase()}

{user.displayName || user.username}

@{user.username}

{user.bio && (

{user.bio}

)}
Membre depuis{" "} {new Date(user.createdAt).toLocaleDateString("fr-FR", { month: "long", year: "numeric", })}
Mes Mèmes Mes Favoris
); }