Исправления видео:
- Видео элементы теперь создаются программно через createElement
- Удалён setTimeout, добавлена прямая замена placeholder'ов
- video.load() вызывается сразу после создания элемента
- Исправлен доступ к правильному контейнеру вложения
Текст необязателен при файлах:
- Удалён атрибут required у textarea
- Добавлена валидация: должен быть либо текст, либо файлы
- При отправке файла без текста отправляется пустая строка
- Показывается alert если нет ни текста, ни файлов
- Добавлен атрибут preload='metadata' для video элементов
- Добавлен текст-заглушка 'Ваш браузер не поддерживает видео'
- Добавлена принудительная загрузка video.load() после добавления в DOM
- Исправлено как в шаблоне, так и в JavaScript для WebSocket сообщений
Теперь видео загружается сразу после отправки без перезагрузки страницы
Backend:
- Добавлен API endpoint /communications/api/upload-message/ для загрузки сообщений с файлами
- Обновлён consumers.py: добавлена сериализация вложений в serialize_message()
- Поддержка 4 типов файлов: image, video, audio, file
- Автоопределение типа по MIME
Frontend:
- Обновлён chat_detail.html: отправка файлов через fetch API вместо alert
- Добавлено отображение вложений в шаблоне (изображения, аудио, видео, документы)
- Обновлён chatMessageTemplates.js: рендеринг вложений для WebSocket сообщений
- Добавлена функция formatFileSize() для отображения размера файлов
Модель MessageAttachment уже существовала, миграции применены