From cf2152dcfc90507fb7162793dc3843826982fc9522b200989ab541d1a22dcd9d Mon Sep 17 00:00:00 2001 From: AidarKC Date: Thu, 18 Jun 2026 13:04:06 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=95=20=D0=9F=D0=A0=D0=9E=D0=92=D0=95?= =?UTF-8?q?=D0=A0=D0=95=D0=9D=D0=9E:=20UI=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B8?= =?UTF-8?q?=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=87=D0=BD=D1=8B=D1=85=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-06-17_1735_dm_files_and_revisions.md | 11 +- Dev_Docs/Personal_Messages/README.md | 3 + VERSION.properties | 4 +- shine-UI/js/pages/chat-view.js | 431 +++++++++++++----- shine-UI/js/services/auth-service.js | 57 ++- shine-UI/js/state.js | 8 +- shine-UI/styles/components.css | 71 +++ 7 files changed, 449 insertions(+), 136 deletions(-) diff --git a/Dev_Docs/Pending_Features/2026-06-17_1735_dm_files_and_revisions.md b/Dev_Docs/Pending_Features/2026-06-17_1735_dm_files_and_revisions.md index cbd90ac..46505e6 100644 --- a/Dev_Docs/Pending_Features/2026-06-17_1735_dm_files_and_revisions.md +++ b/Dev_Docs/Pending_Features/2026-06-17_1735_dm_files_and_revisions.md @@ -7,12 +7,15 @@ 1. Отправка обычного текста без вложений. 2. Повторная отправка того же логического сообщения с тем же `timeMs + nonce`, но большим `revisionTimeMs`. 3. Обновление текста у уже существующего сообщения в UI без появления нового пузыря. - 4. Игнорирование более старой ревизии на сервере. - 5. Удаление сообщения пустой ревизией (`attachmentsCount = 0`, `encryptedBodyLen = 0`) и исчезновение из UI. - 6. Доставка backlog после переподключения сессии для последней версии сообщения. + 4. Показ в UI метки `изменено: <дата время>` после редактирования. + 5. Игнорирование более старой ревизии на сервере и в клиентском state. + 6. Удаление сообщения пустой ревизией (`attachmentsCount = 0`, `encryptedBodyLen = 0`) и исчезновение из UI. + 7. Работа меню сообщения: `Скопировать как текст / Прочесть / Изменить / Удалить`. + 8. Режим редактирования с возвратом предыдущего draft после отмены или завершения редактирования. + 9. Доставка backlog после переподключения сессии для последней версии сообщения. - ожидаемый результат: - Контентные сообщения `type=1/2` приходят в формате `SHiNE_DM`, сервер хранит только последнюю ревизию по `messageKey`, более старая ревизия не перетирает новую, а пустая ревизия убирает сообщение из интерфейса. + Контентные сообщения `type=1/2` приходят в формате `SHiNE_DM`, сервер хранит только последнюю ревизию по `messageKey`, более старая ревизия не перетирает новую, редактирование обновляет существующий пузырь с пометкой `изменено`, а пустая ревизия убирает сообщение из интерфейса. - статус: pending diff --git a/Dev_Docs/Personal_Messages/README.md b/Dev_Docs/Personal_Messages/README.md index c7e6fac..817e6e9 100644 --- a/Dev_Docs/Personal_Messages/README.md +++ b/Dev_Docs/Personal_Messages/README.md @@ -191,6 +191,9 @@ UI сейчас работает так: - показывает только текст `encryptedBody`; - умеет обновлять уже существующее сообщение по тому же `messageKey`; - не показывает удалённые сообщения; +- позволяет владельцу сообщения вызвать меню `Скопировать как текст / Прочесть / Изменить / Удалить`; +- при редактировании показывает над полем ввода полоску `Редактируем сообщение: ...` с кнопкой отмены; +- после редактирования показывает под временем отдельную строку `изменено: <дата время>`; - не показывает и не принимает вложения. ## Что обязательно помнить diff --git a/VERSION.properties b/VERSION.properties index 2ded924..158a3f5 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.209 -server.version=1.2.198 +client.version=1.2.211 +server.version=1.2.199 diff --git a/shine-UI/js/pages/chat-view.js b/shine-UI/js/pages/chat-view.js index df2e011..706f55d 100644 --- a/shine-UI/js/pages/chat-view.js +++ b/shine-UI/js/pages/chat-view.js @@ -21,14 +21,25 @@ import { showToast } from '../services/channels-ux.js'; export const pageMeta = { id: 'chat-view', title: 'Чат' }; -function openMessageActionsModal({ messageText = '', onReadAloud }) { +function truncatePreviewText(value, maxLen = 72) { + const normalized = String(value || '').replace(/\s+/g, ' ').trim(); + if (!normalized) return ''; + if (normalized.length <= maxLen) return normalized; + return `${normalized.slice(0, Math.max(0, maxLen - 1)).trimEnd()}…`; +} + +function openDeleteMessageConfirmModal({ onConfirm }) { const root = document.getElementById('modal-root'); if (!root) return; root.innerHTML = ` -