From 652397c0b940b8355670eea12b8f78d44ae47103 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 17 May 2026 10:24:03 +0000 Subject: [PATCH] =?UTF-8?q?Revert=20"=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B?= =?UTF-8?q?=D1=82=D0=B8=D1=8F=20=D1=87=D0=B0=D1=82=D0=B0:=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D0=B2=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D1=81=D0=B1=D0=BE=D0=B5=20=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D0=B0=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= =?UTF-8?q?,=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D1=8F=D1=82=D1=8C=20?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D1=83=D1=8E=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=80=D1=82=D0=BE=D1=87=D0=BA=D1=83"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 083eae4059731f9a5b4f5231de5dd43e3b649157. --- js/main.js | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/js/main.js b/js/main.js index 8869786..a868920 100644 --- a/js/main.js +++ b/js/main.js @@ -91,10 +91,6 @@ }; } - function ticketApiPath(ticketNumber) { - return encodeURIComponent(String(ticketNumber ?? "")); - } - function revokeAttachmentUrls() { for (const u of state.blobUrls) { try { @@ -953,9 +949,6 @@ await refreshLastMessageSignaturesStaggered(); updateBoardUnreadFingerprints(); renderTickets(); - if (state.chatModalOpen && state.currentTicket != null) { - reapplyActiveTicketCard(state.currentTicket); - } } function partitionClientTickets(list) { @@ -1022,24 +1015,22 @@ const tnSel = String(ticketNumber).replace(/\\/g, "\\\\").replace(/"/g, '\\"'); const card = document.querySelector(`.f7-ticket-card[data-ticket-number="${tnSel}"]`); if (card) card.classList.add("f7-ticket-card--active"); - showError(""); openChatModal(ticket); delete state.ticketUnreadByLastMsg[String(ticketNumber)]; try { await fetchMessages(); + await fetchTickets(); + const row = state.tickets.find((x) => x.ticket_number === ticketNumber); + if (row) row.has_unread = false; + renderTickets(); + reapplyActiveTicketCard(ticketNumber); + void markClientTicketRead(ticket.ticket_number); + connectTicketSocket(ticket.ticket_number); } catch (e) { showError(e.message || "Не удалось загрузить сообщения"); disconnectTicketSocket(); await closeChatModal(); - return; } - const row = state.tickets.find((x) => x.ticket_number === ticketNumber); - if (row) row.has_unread = false; - renderTickets(); - reapplyActiveTicketCard(ticketNumber); - void markClientTicketRead(ticket.ticket_number); - connectTicketSocket(ticket.ticket_number); - fetchTickets().catch(() => {}); } function renderTickets() { @@ -1061,8 +1052,7 @@ async function fetchMessages() { if (!state.currentTicket) return; - const tn = ticketApiPath(state.currentTicket); - const response = await fetch(`${apiBase}/api/client/tickets/${tn}/messages`, { + const response = await fetch(`${apiBase}/api/client/tickets/${state.currentTicket}/messages`, { headers: clientIdentityHeaders(), }); if (!response.ok) throw new Error("Не удалось загрузить сообщения"); @@ -1072,7 +1062,7 @@ } async function fetchClientAttachmentBlob(attachmentId) { - const url = `${apiBase}/api/client/tickets/${ticketApiPath(state.currentTicket)}/attachments/${encodeURIComponent(String(attachmentId))}`; + const url = `${apiBase}/api/client/tickets/${state.currentTicket}/attachments/${attachmentId}`; const res = await fetch(url, { headers: clientIdentityHeaders() }); if (!res.ok) throw new Error("attachment"); return res.blob(); @@ -1236,7 +1226,7 @@ } if (!text && file) text = `📎 ${file.name}`; - const response = await fetch(`${apiBase}/api/client/tickets/${ticketApiPath(state.currentTicket)}/messages`, { + const response = await fetch(`${apiBase}/api/client/tickets/${state.currentTicket}/messages`, { method: "POST", headers: { "Content-Type": "application/json", @@ -1253,7 +1243,7 @@ const form = new FormData(); form.append("message_id", String(created.id)); form.append("file", file); - const attRes = await fetch(`${apiBase}/api/client/tickets/${ticketApiPath(state.currentTicket)}/attachments`, { + const attRes = await fetch(`${apiBase}/api/client/tickets/${state.currentTicket}/attachments`, { method: "POST", headers: clientIdentityHeaders(), body: form,