feat: add media attachment support for admin ticket replies

Admin can now attach photos, videos, and documents when replying to
tickets. Upload happens on file selection via existing media upload
endpoint. Includes attachment preview with type-specific icons,
upload progress, error handling, race condition protection, and
proper blob URL lifecycle management.

Added video player rendering for video attachments in message thread.
Updated ticket list preview to show [media_type] for media-only messages.
This commit is contained in:
Fringg
2026-03-19 06:39:05 +03:00
parent 6c3286abbe
commit 84f0e4e9b4
6 changed files with 307 additions and 13 deletions

View File

@@ -1917,6 +1917,12 @@
"adminLabel": "Admin",
"replyPlaceholder": "Type your reply...",
"sendReply": "Send Reply",
"attachMedia": "Attach media",
"invalidFileType": "Invalid file type. Use images, videos (MP4, WebM) or documents (PDF, DOC, TXT, ZIP).",
"fileTooLarge": "File is too large. Maximum size is 10MB.",
"uploadFailed": "Failed to upload file",
"uploading": "Uploading...",
"uploadComplete": "Uploaded",
"settings": "Settings",
"settingsSubtitle": "Configure ticket system and SLA",
"settingsLoadError": "Failed to load settings",

View File

@@ -1579,6 +1579,12 @@
"adminLabel": "مدیر",
"replyPlaceholder": "پاسخ خود را بنویسید...",
"sendReply": "ارسال پاسخ",
"attachMedia": "پیوست رسانه",
"invalidFileType": "نوع فایل نامعتبر. از تصاویر، ویدئو (MP4, WebM) یا اسناد (PDF, DOC, TXT, ZIP) استفاده کنید.",
"fileTooLarge": "فایل بسیار بزرگ است. حداکثر اندازه ۱۰ مگابایت.",
"uploadFailed": "آپلود فایل ناموفق بود",
"uploading": "در حال آپلود...",
"uploadComplete": "آپلود شد",
"settings": "تنظیمات",
"settingsSubtitle": "پیکربندی سیستم تیکت و SLA",
"settingsLoadError": "خطا در بارگذاری تنظیمات",

View File

@@ -2428,6 +2428,12 @@
"adminLabel": "Админ",
"replyPlaceholder": "Введите ваш ответ...",
"sendReply": "Отправить",
"attachMedia": "Прикрепить медиа",
"invalidFileType": "Неверный тип файла. Используйте изображения, видео (MP4, WebM) или документы (PDF, DOC, TXT, ZIP).",
"fileTooLarge": "Файл слишком большой. Максимальный размер 10МБ.",
"uploadFailed": "Не удалось загрузить файл",
"uploading": "Загрузка...",
"uploadComplete": "Загружено",
"settings": "Настройки",
"settingsSubtitle": "Настройка тикетной системы и SLA",
"settingsLoadError": "Не удалось загрузить настройки",

View File

@@ -1617,6 +1617,12 @@
"adminLabel": "管理员",
"replyPlaceholder": "输入您的回复...",
"sendReply": "发送回复",
"attachMedia": "附加媒体",
"invalidFileType": "文件类型无效。请使用图片、视频 (MP4, WebM) 或文档 (PDF, DOC, TXT, ZIP)。",
"fileTooLarge": "文件太大。最大 10MB。",
"uploadFailed": "上传文件失败",
"uploading": "上传中...",
"uploadComplete": "已上传",
"settings": "设置",
"settingsSubtitle": "配置工单系统和SLA",
"settingsLoadError": "加载设置失败",