"use client" import * as React from "react" import { type Row } from "@tanstack/react-table" import { Loader, Trash } from "lucide-react" import { toast } from "sonner" import { useMediaQuery } from "@/hooks/use-media-query" import { Button } from "@/components/ui/button" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer" import { deleteProjectGtcFile } from "../service" import { ProjectGtcView } from "@/db/schema" interface DeleteGtcFileDialogProps extends React.ComponentPropsWithoutRef { projects: Row["original"][] showTrigger?: boolean onSuccess?: () => void } export function DeleteGtcFileDialog({ projects, showTrigger = true, onSuccess, ...props }: DeleteGtcFileDialogProps) { const [isDeletePending, startDeleteTransition] = React.useTransition() const isDesktop = useMediaQuery("(min-width: 640px)") function onDelete() { startDeleteTransition(async () => { try { // 각 프로젝트의 GTC 파일을 삭제 const deletePromises = projects.map(project => deleteProjectGtcFile(project.id) ) const results = await Promise.all(deletePromises) // 성공/실패 확인 const successCount = results.filter(result => result.success).length const failureCount = results.length - successCount if (failureCount > 0) { toast.error(`${failureCount}개 파일 삭제에 실패했습니다.`) return } props.onOpenChange?.(false) toast.success(`${successCount}개 GTC 파일이 성공적으로 삭제되었습니다.`) onSuccess?.() } catch (error) { console.error("Delete error:", error) toast.error("파일 삭제 중 오류가 발생했습니다.") } }) } if (isDesktop) { return ( {showTrigger ? ( ) : null} Are you absolutely sure? This action cannot be undone. This will permanently delete{" "} {projects.length} {projects.length === 1 ? " Project GTC" : " Project GTCs"} from our servers. ) } return ( {showTrigger ? ( ) : null} Are you absolutely sure? This action cannot be undone. This will permanently delete{" "} {projects.length} {projects.length === 1 ? " Project GTC" : " Project GTCs"} from our servers. ) }