"use client"; import { useState } from "react"; import { toast } from "sonner"; import { Archive, RotateCcw, Loader2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { useArchiveCase, useRestoreCase, type ArchiveResult } from "@/lib/api/cases"; function paperclipMessage(res: ArchiveResult, action: "archive" | "restore"): string { const verb = action === "archive" ? "אורכן" : "שוחזר"; switch (res.paperclip?.status) { case "archived": { const cancelled = res.paperclip.issues_cancelled?.length ?? 0; const issuesNote = cancelled > 0 ? ` (${cancelled} משימות פתוחות בוטלו)` : ""; return `התיק ${verb}. גם הפרויקט ב-Paperclip${issuesNote}.`; } case "restored": return `התיק ${verb}. גם הפרויקט ב-Paperclip ${verb}.`; case "not_found": return `התיק ${verb}. לא נמצא פרויקט מקביל ב-Paperclip.`; case "error": return `התיק ${verb} ב-legal-ai, אך סנכרון Paperclip נכשל${ res.paperclip?.message ? `: ${res.paperclip.message}` : "." }`; default: return `התיק ${verb}.`; } } export function CaseArchiveAction({ caseNumber, archivedAt, }: { caseNumber: string; archivedAt?: string | null; }) { const [open, setOpen] = useState(false); const archive = useArchiveCase(caseNumber); const restore = useRestoreCase(caseNumber); const isArchived = Boolean(archivedAt); const pending = archive.isPending || restore.isPending; function handleArchive() { archive.mutate(undefined, { onSuccess: (res) => { setOpen(false); toast.success(paperclipMessage(res, "archive")); }, onError: (err) => toast.error(err instanceof Error ? err.message : "שגיאה בארכוב"), }); } function handleRestore() { restore.mutate(undefined, { onSuccess: (res) => { toast.success(paperclipMessage(res, "restore")); }, onError: (err) => toast.error(err instanceof Error ? err.message : "שגיאה בשחזור"), }); } if (isArchived) { return ( ); } return ( ארכון תיק {caseNumber} התיק יוסר מרשימת התיקים הראשית ויעבור לעמוד הארכיון. הפרויקט המקביל ב-Paperclip יסומן גם הוא כארכוב. ניתן לשחזר בכל עת. ); }