"use client" import * as React from "react" import { zodResolver } from "@hookform/resolvers/zod" 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 { Loader } from "lucide-react" import { AssginedUserTable } from "../userTable/assignedUsers-table" import { assignUsersToRole } from "@/lib/users/service" import { RoleView } from "@/db/schema/users" export interface UpdateRoleSheetProps extends React.ComponentPropsWithRef { role: RoleView | null // ★ 새로 추가: 테이블에 필요한 데이터 로딩 promise assignedTablePromises: Promise<[ { data: any[]; pageCount: number } ]> } export function AssignRolesSheet({ role, assignedTablePromises, ...props }: UpdateRoleSheetProps) { const [isUpdatePending, startUpdateTransition] = React.useTransition() const [selectedUserIds, setSelectedUserIds] = React.useState([]) // 2) 자식에서 호출될 콜백 function handleSelectedChange(ids: number[]) { setSelectedUserIds(ids) } async function handleAssign() { startUpdateTransition(async () => { if (!role) return const { error } = await assignUsersToRole(role.id, selectedUserIds) if (error) { toast.error(error) return } props.onOpenChange?.(false) toast.success(`Assigned ${selectedUserIds.length} users!`) }) } return ( "{role?.name}"에 유저를 할당하세요 현재 {role?.name}에는 {role?.user_count}명이 할당되어있습니다. 이 롤은 다음과 같습니다.
{role?.description}
{/*
) }