// delete-template-dialog.tsx "use client" import * as React from "react" import { Loader, Trash } from "lucide-react" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { type TemplateListView } from "@/db/schema" import { deleteTemplate, bulkDeleteTemplates } from "../service" interface DeleteTemplateDialogProps extends React.ComponentPropsWithRef { templates: TemplateListView[] showTrigger?: boolean onSuccess?: () => void } export function DeleteTemplateDialog({ templates, showTrigger = true, onSuccess, ...props }: DeleteTemplateDialogProps) { const [isDeletePending, startDeleteTransition] = React.useTransition() const isMultiple = templates.length > 1 const templateName = isMultiple ? `${templates.length}개 템플릿` : templates[0]?.name function onDelete() { startDeleteTransition(async () => { let result if (isMultiple) { const ids = templates.map(t => t.id) result = await bulkDeleteTemplates(ids) } else { result = await deleteTemplate(templates[0].id) } if (result.error) { toast.error(result.error) return } props.onOpenChange?.(false) onSuccess?.() toast.success( isMultiple ? `${templates.length}개 템플릿이 삭제되었습니다` : "템플릿이 삭제되었습니다" ) // 페이지 새로고침으로 데이터 갱신 window.location.reload() }) } return ( {showTrigger && ( )} 템플릿 삭제 확인 정말로 {templateName}을(를) 삭제하시겠습니까? {!isMultiple && ( <>
이 작업은 되돌릴 수 없습니다. )}
{/* 삭제될 템플릿 목록 표시 */} {templates.length > 0 && (

삭제될 템플릿

{templates.map((template) => (
{template.name}
Slug: {template.slug}
))}
)}
) }