'use client'; import { zodResolver } from '@hookform/resolvers/zod'; import cookies from 'js-cookie'; import { Loader2 } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { useForm } from 'react-hook-form'; import { useSWRConfig } from 'swr'; import { z } from 'zod'; import { Button } from '@/components/ui/Button'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/Form'; import { Input } from '@/components/ui/Input'; import { useUser } from '@/context/user'; import { type Player } from '@/lib/players'; import { Separator } from '@/components/ui/Separator'; type SettingsData = { name: string; chapter?: number; puzzle?: number; }; export default function Page() { const { data: me, isLoading } = useUser(); const { mutate } = useSWRConfig(); const router = useRouter(); const groups = (me?.groups && me?.groups.map((group) => ({ title: group.name, value: group.name }))) || []; async function onSubmit(data: SettingsData) { if (!data) return; const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/groupQuit`, { method: 'POST', body: JSON.stringify({ name: data.name, chapter: me?.groups?.find((group) => group.name === data.name)?.chapter // puzzle: me?.groups?.find((group) => group.name === data.name)?.puzzle }), headers: { Authorization: `Bearer ${cookies.get('token')}}` } }); if (res.ok) { mutate('me'); router.push('/dashboard/puzzles'); } else if (res.status === 423) { alert("Vous ne pouvez pas quitter un groupe en cours d'évenement"); } } return ( Mon profil C'est ici que vous pouvez modifier votre profil. {!isLoading && } {/* Quitter */} {me?.groups && me.groups.map((group, index) => { return ( {group.name} Chapitre : {group.chapter} - Puzzle : {group.puzzle} ); })} ); } const ProfileFormSchema = z.object({ email: z.string().email({ message: "L'email doit être valide" }), pseudo: z.string(), firstname: z.string(), lastname: z.string(), description: z.string() }); function ProfileForm({ user }: { user: Player }) { const form = useForm>({ resolver: zodResolver(ProfileFormSchema), defaultValues: { email: user.email, pseudo: user.pseudo, firstname: user.firstname, lastname: user.lastname, description: user.description }, mode: 'onChange' }); const [submit, setSubmit] = useState(false); // TODO: Route pas encore faite async function onSubmit(data: z.infer) { console.log(data); setSubmit(!submit); setTimeout(() => { setSubmit(false); }, 2000); } return ( ( Email )} /> ( Pseudo )} /> ( Prénom )} /> ( Nom )} /> ( Description )} /> {submit && } Modifier ); }
C'est ici que vous pouvez modifier votre profil.
Chapitre : {group.chapter} - Puzzle : {group.puzzle}