From f7f63089538b733a066a287fb9f69ba9ec03c2b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=9D=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Fri, 28 Nov 2025 08:34:36 +0300 Subject: [PATCH] =?UTF-8?q?Fix:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=86=D0=B2=D0=B5=D1=82=D0=B0=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20=D0=B8=20=D0=B4=D0=B2?= =?UTF-8?q?=D0=BE=D0=B9=D0=BD=D0=B0=D1=8F=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/static/css/components/chat-detail.css | 12 ++- .../templates/communications/chat_detail.html | 96 +++++++++---------- 2 files changed, 56 insertions(+), 52 deletions(-) diff --git a/backend/static/css/components/chat-detail.css b/backend/static/css/components/chat-detail.css index 72605852..4bfcfcae 100644 --- a/backend/static/css/components/chat-detail.css +++ b/backend/static/css/components/chat-detail.css @@ -270,10 +270,20 @@ main.main { } .message-attachments .text-secondary { + color: inherit; opacity: 0.7; } -.bubble-me .message-attachments .text-primary { +.bubble-me .message-attachments .text-secondary { + color: rgba(255, 255, 255, 0.9) !important; + opacity: 1; +} + +.bubble-me .message-attachments .fw-semibold { + color: rgba(255, 255, 255, 0.95) !important; +} + +.bubble-me .message-attachments i { color: rgba(255, 255, 255, 0.9) !important; } diff --git a/backend/templates/communications/chat_detail.html b/backend/templates/communications/chat_detail.html index 57f1eed6..d6793efe 100644 --- a/backend/templates/communications/chat_detail.html +++ b/backend/templates/communications/chat_detail.html @@ -148,7 +148,7 @@
Собеседник печатает…
-
+ {% csrf_token %}
@@ -354,62 +354,56 @@ document.addEventListener('DOMContentLoaded', function() { return; } - // Если есть вложения, отправляем через API - if (selectedFiles.length > 0) { - const formData = new FormData(); - // Если текст пустой, отправляем пустую строку - formData.append('content', content || ''); - - selectedFiles.forEach((file, index) => { - formData.append(`file_${index}`, file); + // Всегда отправляем через API (с файлами или без) + const formData = new FormData(); + formData.append('content', content || ''); + + selectedFiles.forEach((file, index) => { + formData.append(`file_${index}`, file); + }); + + formData.append('chat_id', '{{ chat.id }}'); + + const csrftoken = getCookie('csrftoken'); + console.log('CSRF token:', csrftoken); + + if (!csrftoken) { + console.error('CSRF token not found in cookies!'); + alert('Ошибка: CSRF токен не найден. Обновите страницу.'); + return; + } + + try { + const response = await fetch('/api/v1/communications/upload-message/', { + method: 'POST', + body: formData, + headers: { + 'X-CSRFToken': csrftoken + } }); - formData.append('chat_id', '{{ chat.id }}'); + const result = await response.json(); - const csrftoken = getCookie('csrftoken'); - console.log('CSRF token:', csrftoken); - - if (!csrftoken) { - console.error('CSRF token not found in cookies!'); - alert('Ошибка: CSRF токен не найден. Обновите страницу.'); - return; - } - - try { - const response = await fetch('/api/v1/communications/upload-message/', { - method: 'POST', - body: formData, - headers: { - 'X-CSRFToken': csrftoken - } - }); + if (result.ok) { + console.log('Сообщение отправлено:', result); - const result = await response.json(); + // Очищаем форму + textarea.value = ''; + selectedFiles = []; + updatePreview(); + documentInput.value = ''; + imageInput.value = ''; + cameraInput.value = ''; + audioInput.value = ''; - if (result.ok) { - console.log('Сообщение с файлами отправлено:', result); - - // Очищаем форму - textarea.value = ''; - selectedFiles = []; - updatePreview(); - documentInput.value = ''; - imageInput.value = ''; - cameraInput.value = ''; - audioInput.value = ''; - - // Отображаем сообщение через WebSocket будет автоматически - } else { - console.error('Ошибка отправки:', result.error); - alert('Ошибка при отправке файлов: ' + result.error); - } - } catch (error) { - console.error('Ошибка отправки файлов:', error); - alert('Ошибка сети при отправке файлов'); + // Отображаем сообщение через WebSocket будет автоматически + } else { + console.error('Ошибка отправки:', result.error); + alert('Ошибка при отправке: ' + result.error); } - } else if (content) { - // Отправляем только текст (стандартное поведение формы) - chatForm.submit(); + } catch (error) { + console.error('Ошибка отправки:', error); + alert('Ошибка сети при отправке сообщения'); } }); });