From b1710da477a367ae501422a47ab42260deabd7d0 Mon Sep 17 00:00:00 2001 From: Nurfog Date: Mon, 2 Nov 2026 16:15:16 -0300 Subject: [PATCH] =?UTF-8?q?feat(respuesta):=20bot=C3=B3n=20Enviar=20con=20?= =?UTF-8?q?opciones=20(enviar,=20enviar=20y=20resuelto,=20enviar=20y=20cer?= =?UTF-8?q?rado)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/app/(app)/tickets/[id]/page.tsx | 88 +++++++++++++++++++- 1 file changed, 86 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/(app)/tickets/[id]/page.tsx b/frontend/src/app/(app)/tickets/[id]/page.tsx index a52beb9..9c5899d 100644 --- a/frontend/src/app/(app)/tickets/[id]/page.tsx +++ b/frontend/src/app/(app)/tickets/[id]/page.tsx @@ -225,6 +225,13 @@ export default function TicketDetailPage() { const [mergeTarget, setMergeTarget] = useState(""); const [mergeError, setMergeError] = useState(""); const [merging, setMerging] = useState(false); + const [sendMenuOpen, setSendMenuOpen] = useState(false); + + const handleAddComment = (e: React.FormEvent) => { + e.preventDefault(); + setSendMenuOpen(false); + void submitComment(); + }; useEffect(() => { Promise.all([ @@ -267,8 +274,8 @@ export default function TicketDetailPage() { const MAX_FILE_BYTES = 10 * 1024 * 1024; - const handleAddComment = async (e: React.FormEvent) => { - e.preventDefault(); + // Envía el comentario y, opcionalmente, resuelve o cierra el ticket. + const submitComment = async (after?: "resolved" | "closed") => { if (!comment.trim()) return; // Solo se envía/guarda el mensaje escrito, sin historial pegado o // citado (se usa para revisar casos en el futuro). @@ -308,6 +315,15 @@ export default function TicketDetailPage() { setCc(""); setFiles([]); setPendingIds([]); + if (after) { + try { + await updateTicketStatus(id, after); + await refreshTicket(); + notify.success(after === "resolved" ? "Ticket resuelto" : "Ticket cerrado"); + } catch (err: unknown) { + setError(err instanceof Error ? err.message : "El mensaje se envió, pero no se pudo cambiar el estado"); + } + } } catch (err: unknown) { // Si la subida salió pero el comentario falló, los ids quedan // pendientes y se vinculan en el próximo envío. @@ -829,6 +845,74 @@ export default function TicketDetailPage() { )} + {isTeam && ( +
+ + {sendMenuOpen && ( + <> +
setSendMenuOpen(false)} + /> +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+ + )} +
+ )}