"use client"; import React from "react"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { z } from "zod"; import { userSchema } from "@/lib/validation/zod/user"; import { User } from "next-auth"; import { updateUserProfile } from "@/server/actions/user"; import { toast } from "sonner"; function UserForm({ server_user, cb }: { server_user: User; cb?: () => void }) { const form = useForm>({ resolver: zodResolver(userSchema), defaultValues: { name: server_user?.name ?? "", }, }); // 2. Define a submit handler. async function onSubmit(values: z.infer) { // Do something with the form values. // ✅ This will be type-safe and validated. const { success } = await updateUserProfile(values); if (success) toast.success("Dein Profil wurde aktualisiert!"); else toast.error("Etwas ist fehlgeschlagen. Bitte versuche es erneut."); cb?.(); form.reset(); } return (
( Name
Dein Name ist für alle sichtbar.
)} /> ); } export default UserForm;