'use client'; import React from 'react'; import { Button } from '@/components/ui/button'; import { PaperclipIcon } from 'lucide-react'; import { Badge } from '@/components/ui/badge'; import { toast } from 'sonner'; import { type VendorAttach } from '@/db/schema/vendors'; import { downloadVendorAttachments } from '../service'; interface AttachmentsButtonProps { vendorId: number; hasAttachments: boolean; attachmentsList?: VendorAttach[]; } export function AttachmentsButton({ vendorId, hasAttachments, attachmentsList = [] }: AttachmentsButtonProps) { if (!hasAttachments) return null; const handleDownload = async () => { try { toast.loading('첨부파일을 준비하는 중...'); // 서버 액션 호출 const result = await downloadVendorAttachments(vendorId); // 로딩 토스트 닫기 toast.dismiss(); if (!result || !result.url) { toast.error('다운로드 준비 중 오류가 발생했습니다.'); return; } // 파일 다운로드 트리거 toast.success('첨부파일 다운로드가 시작되었습니다.'); // 다운로드 링크 열기 const a = document.createElement('a'); a.href = result.url; a.download = result.fileName || '첨부파일.zip'; a.style.display = 'none'; document.body.appendChild(a); a.click(); document.body.removeChild(a); } catch (error) { toast.dismiss(); toast.error('첨부파일 다운로드에 실패했습니다.'); console.error('첨부파일 다운로드 오류:', error); } }; return ( ); }