"use client" import * as React from "react" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table" import { History, Download, Upload } from "lucide-react" import { formatDate, formatBytes } from "@/lib/utils" import { getAttachmentRevisions } from "../service" import { AddRevisionDialog } from "./add-revision-dialog" interface RevisionDialogProps { attachmentId: number currentRevision: string originalFileName: string } export function RevisionDialog({ attachmentId, currentRevision, originalFileName }: RevisionDialogProps) { const [open, setOpen] = React.useState(false) const [revisions, setRevisions] = React.useState([]) const [isLoading, setIsLoading] = React.useState(false) const [isAddRevisionOpen, setIsAddRevisionOpen] = React.useState(false) // 리비전 목록 로드 const loadRevisions = async () => { setIsLoading(true) try { const result = await getAttachmentRevisions(attachmentId) if (result.success) { setRevisions(result.revisions) } else { console.error("Failed to load revisions:", result.message) } } catch (error) { console.error("Failed to load revisions:", error) } finally { setIsLoading(false) } } React.useEffect(() => { if (open) { loadRevisions() } }, [open, attachmentId]) return ( <> 리비전 히스토리: {originalFileName} 이 문서의 모든 버전을 확인하고 관리할 수 있습니다.
{/* 새 리비전 추가 버튼 */}
{/* 리비전 목록 */} {isLoading ? (
리비전을 불러오는 중...
) : (
리비전 파일명 크기 업로드 일시 업로드자 코멘트 액션 {revisions.map((revision) => (
{revision.revisionNo} {revision.isLatest && ( 최신 )}
{revision.originalFileName}
{formatBytes(revision.fileSize)} {formatDate(revision.createdAt)} {revision.createdByName || "-"}
{revision.revisionComment || "-"}
))}
)}
{/* 새 리비전 추가 다이얼로그 */} { loadRevisions() // 리비전 목록 새로고침 }} /> ) }