НЕ ПРОВЕРЕНО: откат DM-вложений, оставлены ревизии и удаление

This commit is contained in:
AidarKC
2026-06-18 12:24:14 +04:00
parent 92fd315505
commit a95bd245cf
23 changed files with 309 additions and 1267 deletions
@@ -1,19 +1,18 @@
# DM-вложения, upload и ревизии сообщений
# Ревизии и удаление личных сообщений
- краткое описание фичи:
Добавлен новый формат контентных DM `SHiNE_DM`, HTTP upload/download ciphertext-файлов, серверный `upsert` последней версии сообщения и UI-скачивание/расшифровка вложений.
Добавлен новый формат контентных DM `SHiNE_DM` без вложений, серверный `upsert` последней версии сообщения, редактирование через `revisionTimeMs` и удаление пустой ревизией.
- что проверять:
1. Отправка обычного текста без вложений.
2. Отправка сообщения с 1-2 вложениями.
3. Повторная отправка сообщения с уже загруженным файлом без повторной записи blob.
4. Скачивание вложения из UI и корректная расшифровка файла.
5. Доставка backlog после переподключения сессии.
6. Обновление существующего сообщения той же парой `timeMs+nonce` и большим `revisionTimeMs`.
7. Удаление сообщения пустой ревизией (`attachments=0`, `encryptedBodyLen=0`) и исчезновение из UI.
2. Повторная отправка того же логического сообщения с тем же `timeMs + nonce`, но большим `revisionTimeMs`.
3. Обновление текста у уже существующего сообщения в UI без появления нового пузыря.
4. Игнорирование более старой ревизии на сервере.
5. Удаление сообщения пустой ревизией (`attachmentsCount = 0`, `encryptedBodyLen = 0`) и исчезновение из UI.
6. Доставка backlog после переподключения сессии для последней версии сообщения.
- ожидаемый результат:
Сообщения `type=1/2` приходят в формате `SHiNE_DM`, файлы доступны по `/f/<hash>`, UI показывает вложения кнопками скачивания, сервер хранит только последнюю ревизию по `messageKey`, а пустая ревизия убирает сообщение из интерфейса.
Контентные сообщения `type=1/2` приходят в формате `SHiNE_DM`, сервер хранит только последнюю ревизию по `messageKey`, более старая ревизия не перетирает новую, а пустая ревизия убирает сообщение из интерфейса.
- статус:
pending