'use client'; import Link from 'next/link'; import { ExternalLink } from '@/public/assets/external-link'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; import { Button } from '@kit/ui/button'; import { Checkbox } from '@kit/ui/checkbox'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@kit/ui/form'; import { Input } from '@kit/ui/input'; import { Trans } from '@kit/ui/trans'; import { UpdateAccountSchemaClient } from '../_lib/schemas/update-account.schema'; import { onUpdateAccount } from '../_lib/server/update-account'; import { z } from 'zod'; type UpdateAccountFormValues = z.infer; export function UpdateAccountForm({ defaultValues, isEmailUser, }: { defaultValues: UpdateAccountFormValues, isEmailUser: boolean, }) { const form = useForm({ resolver: zodResolver(UpdateAccountSchemaClient), mode: 'onChange', defaultValues, }); const { firstName, lastName, personalCode, email, weight, height, userConsent } = defaultValues; const hasFirstName = !!firstName; const hasLastName = !!lastName; const hasPersonalCode = !!personalCode; const hasEmail = !!email; const hasWeight = !!weight; const hasHeight = !!height; const onUpdateAccountOptions = async (values: UpdateAccountFormValues) => onUpdateAccount({ firstName: hasFirstName ? firstName : values.firstName, lastName: hasLastName ? lastName : values.lastName, personalCode: hasPersonalCode ? personalCode : values.personalCode, email: hasEmail ? email : values.email, phone: values.phone, weight: (hasWeight ? weight : values.weight) as number, height: (hasHeight ? height : values.height) as number, userConsent: values.userConsent ?? userConsent, city: values.city, }); return (
( )} /> ( )} /> ( )} /> ( )} /> ( )} /> {!isEmailUser && ( <> ( )} />
( field.onChange( e.target.value === '' ? null : Number(e.target.value), ) } /> )} /> ( field.onChange( e.target.value === '' ? null : Number(e.target.value), ) } /> )} />
)} (
)} /> ); }