"use client" import { useFieldArray, useForm } from "react-hook-form" import { zodResolver } from "@hookform/resolvers/zod" import { userUpdateSchema, type UserUpdate } from "./schema" import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { Button } from "@/components/ui/button" import { Checkbox } from "@/components/ui/checkbox" import { Separator } from "@/components/ui/separator" import { DateTimePicker } from "@/components/ui/date-time-picker" import { useUpdateUserMutation } from "./queries" const UserForm = ({ refetchTable, initData, selectedUuid }: { refetchTable: () => void, initData: UserUpdate, selectedUuid: string }) => { const form = useForm({ resolver: zodResolver(userUpdateSchema), defaultValues: { expiryStarts: initData.expiryStarts, expiryEnds: initData.expiryEnds, isConfirmed: initData.isConfirmed, isNotificationSend: initData.isNotificationSend, tag: initData.tag, email: initData.email, phone: initData.phone, collectionTokens: initData.collectionTokens, }, }) const { control, handleSubmit } = form const { fields, append, remove } = useFieldArray({ control, name: "collectionTokens.tokens" }) const mutation = useUpdateUserMutation(); function onSubmit(values: UserUpdate) { mutation.mutate({ data: values as any || initData, uuid: selectedUuid }); setTimeout(() => refetchTable(), 200) } return (
{/* BASIC INFO */}
( Email )} /> ( Phone )} />
{/* PASSWORD / TAG */}
( Tag )} />
{/* DATES */}
( Expiry Starts )} /> ( Expiry Ends )} />
{/* SWITCHES */}
( Confirmed )} /> ( Send Notification )} />
{/* COLLECTION TOKENS */} ( Default Token )} />
Tokens
{fields.length === 0 && (

No tokens added.

)} {fields.map((fieldItem, i) => (
( Prefix )} />
( Token )} />
))}
) } export { UserForm }