"use server"; import { revalidatePath } from "next/cache"; import { auth } from "@/lib/auth"; import { userService } from "@/services/users/user.service"; import { CharacterClass } from "@/prisma/generated/prisma/client"; import { ValidationError, ConflictError } from "@/services/errors"; export async function updateProfile(data: { username?: string; avatar?: string | null; bio?: string | null; characterClass?: string | null; }) { try { const session = await auth(); if (!session?.user) { return { success: false, error: "Non authentifié" }; } const updatedUser = await userService.validateAndUpdateUserProfile( session.user.id, { username: data.username, avatar: data.avatar, bio: data.bio, characterClass: data.characterClass ? (data.characterClass as CharacterClass) : null, }, { id: true, email: true, username: true, avatar: true, bio: true, characterClass: true, hp: true, maxHp: true, xp: true, maxXp: true, level: true, score: true, } ); revalidatePath("/profile"); revalidatePath("/"); return { success: true, data: updatedUser }; } catch (error) { console.error("Error updating profile:", error); if (error instanceof ValidationError || error instanceof ConflictError) { return { success: false, error: error.message }; } return { success: false, error: "Erreur lors de la mise à jour du profil" }; } }