"use client"; import { useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import type { ForgejoIssue } from "@/lib/api-forgejo"; import { closeForgejoIssue } from "@/lib/api-forgejo"; type CloseForgejoIssueDialogProps = { issue: ForgejoIssue | null; open: boolean; onOpenChange: (open: boolean) => void; onCloseSuccess: () => void; }; export function CloseForgejoIssueDialog({ issue, open, onOpenChange, onCloseSuccess, }: CloseForgejoIssueDialogProps) { const [isClosing, setIsClosing] = useState(false); const [error, setError] = useState(null); if (!issue) return null; const handleClose = async () => { setIsClosing(true); setError(null); try { await closeForgejoIssue(issue.id); onCloseSuccess(); onOpenChange(false); } catch (err) { const message = err instanceof Error ? err.message : "Failed to close issue"; setError(message); } finally { setIsClosing(false); } }; return ( Close Git Project issue Pipeline will mark issue{" "} #{issue.forgejo_issue_number} {" "} as closed in the connected Git provider and refresh the local issue cache.

{issue.title}

{issue.body_preview ? (

{issue.body_preview}

) : null}
{error && (
{error}
)}
); }