"use client" import * as React from "react" import { zodResolver } from "@hookform/resolvers/zod" import { Loader } from "lucide-react" import { useForm } from "react-hook-form" import { toast } from "sonner" import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "@/components/ui/sheet" import { Button } from "@/components/ui/button" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { Select, SelectTrigger, SelectContent, SelectItem, SelectValue, SelectGroup, } from "@/components/ui/select" // import your MultiSelect or other role selection import { MultiSelect } from "@/components/ui/multi-select" import { userRoles, type UserView } from "@/db/schema/users" import { updateUserSchema, type UpdateUserSchema } from "@/lib/admin-users/validations" import { modifiUser } from "@/lib/admin-users/service" export interface UpdateAuserSheetProps extends React.ComponentPropsWithRef { user: UserView | null } const languageOptions = [ { value: "ko", label: "한국어" }, { value: "en", label: "English" }, ] export function UpdateAuserSheet({ user, ...props }: UpdateAuserSheetProps) { const [isUpdatePending, startUpdateTransition] = React.useTransition() // 1) RHF 설정 const form = useForm({ resolver: zodResolver(updateUserSchema), defaultValues: { name: user?.user_name ?? "", email: user?.user_email ?? "", companyId: user?.company_id ?? null, roles: user?.roles ?? [], language:'en', }, }) // 2) user prop 바뀔 때마다 form.reset React.useEffect(() => { if (user) { form.reset({ name: user.user_name, email: user.user_email, companyId: user.company_id, roles: user.roles, }) } }, [user, form]) // 3) onSubmit async function onSubmit(input: UpdateUserSchema & { language?: string }) { startUpdateTransition(async () => { if (!user) return const { error } = await modifiUser({ id: user.user_id, // user.userId ...input, }) if (error) { toast.error(error) return } // 성공 시 form.reset() props.onOpenChange?.(false) toast.success("User updated successfully!") }) } return ( Update user Update the user details and save the changes {/* 4) RHF Form */}
{/* name */} ( User Name )} /> {/* email */} ( Email )} /> {/* roles */} ( Roles field.onChange(vals)} /> )} /> ( Language )} /> {/* 5) Footer: Cancel, Save */}
) }