SHA256
docs(blockchain): актуализировать MVP-формат и правила изменения протокола
This commit is contained in:
+26
@@ -0,0 +1,26 @@
|
||||
# Каналы: явные вкладки + fallback CreateChannel для legacy-сервера
|
||||
|
||||
Статус: `pending`
|
||||
|
||||
## Что сделано
|
||||
|
||||
- На экране каналов добавлены явные вкладки:
|
||||
- `Каналы`
|
||||
- `Чаты`
|
||||
- `Мои`
|
||||
- Переключение теперь работает по обычному тапу, без необходимости long-press на кнопке toolbar.
|
||||
- В `addBlockCreateChannel` добавлен fallback:
|
||||
- сначала отправляется текущий формат CreateChannel (с description/type/version),
|
||||
- если сервер возвращает `bad_block_format`, выполняется повтор с legacy-форматом тела (без description/type/version) для совместимости со старым сервером.
|
||||
|
||||
## Как проверять
|
||||
|
||||
1. Открыть экран каналов и проверить переключение всех трёх вкладок по тапу.
|
||||
2. Нажимать на строки каналов и убедиться, что переход в канал работает.
|
||||
3. Создать новый канал и убедиться, что при старом сервере создание не падает с `Некорректный формат блока`.
|
||||
|
||||
## Ожидаемый результат
|
||||
|
||||
- Вкладки `Каналы/Чаты/Мои` переключаются стабильно.
|
||||
- Каналы открываются по тапу.
|
||||
- Создание канала устойчиво к legacy-формату сервера.
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
# Fix: CreateChannel версия формата (v3)
|
||||
|
||||
Статус: `pending`
|
||||
|
||||
## Что исправлено
|
||||
|
||||
- Найдена причина `bad_block_format` при создании канала:
|
||||
UI отправлял тело CreateChannel нового формата (с description/type/version), но с `msgVersion=1`.
|
||||
- Исправлено на корректный `msgVersion=3` для нового формата.
|
||||
- Оставлен fallback для старого сервера:
|
||||
- при `bad_block_format` повтор с legacy-телом и `msgVersion=1`.
|
||||
|
||||
## Как проверять
|
||||
|
||||
1. Открыть `Каналы` и создать новый канал.
|
||||
2. Убедиться, что создание проходит без ошибки `Некорректный формат блока`.
|
||||
3. Проверить, что канал появляется в списке и открывается.
|
||||
|
||||
## Ожидаемый результат
|
||||
|
||||
- Основной путь работает в едином корректном формате `CreateChannel v3`.
|
||||
- На старом сервере сохраняется совместимость через fallback.
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
# Каналы: новые табы + поиск/просмотр + подписка в канале
|
||||
|
||||
- краткое описание фичи:
|
||||
- На вкладке «Каналы» верхние табы переставлены в порядок: `Чаты`, `Каналы`, `Мои`.
|
||||
- По умолчанию открывается вкладка `Каналы` (центральная).
|
||||
- Нижняя кнопка на вкладке `Каналы` переименована: `Найти канал` (вместо `Подписаться на канал`).
|
||||
- В модальном поиске канала оставлен сценарий выбора по `user/channel` (и по имени канала через существующие подсказки), без использования формата `blockchain:number:hash`.
|
||||
- В результатах поиска канала добавлена явная кнопка `Просмотреть` для перехода в канал.
|
||||
- На экране канала кнопка `Подписаться на канал` показывается только если пользователь ещё не подписан.
|
||||
- После подтверждённой подписки кнопка исчезает (повторный ререндер с обновлённым feed).
|
||||
|
||||
- что именно проверять:
|
||||
- Открыть `Каналы`: убедиться, что порядок табов `Чаты | Каналы | Мои`, активна по умолчанию `Каналы`.
|
||||
- На `Каналы` проверить нижнюю кнопку `Найти канал`.
|
||||
- В `Найти канал` выбрать канал и нажать `Просмотреть`: должен открыться экран канала.
|
||||
- На экране чужого канала (без подписки) нажать `Подписаться на канал`, подтвердить `Ок`.
|
||||
- Убедиться, что после успешной подписки кнопка `Подписаться на канал` исчезает.
|
||||
|
||||
- ожидаемый результат:
|
||||
- Пользователь находит и открывает канал через `Найти канал` → `Просмотреть`.
|
||||
- Подписка выполняется на экране канала и не предлагается повторно сразу после успеха.
|
||||
|
||||
- статус:
|
||||
- pending
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
# UI-ошибки в сервер + новый сценарий персонального публичного чата
|
||||
|
||||
- краткое описание фичи:
|
||||
- Добавлена настройка разработчика «Отправлять ошибки на сервер» (по умолчанию выключена), с локальным сохранением.
|
||||
- При включенной настройке UI-ошибки отправляются в `CallDeliveryReport` с `type=ui_error` и отдельным кодом `UI_RUNTIME_ERROR`.
|
||||
- После успешной отправки показывается toast: «Ошибка отправлена на сервер · <login> · <время>».
|
||||
- Для вкладки `Чаты` кнопка переименована в «Новый персональный публичный чат».
|
||||
- Добавлен отдельный экран создания персонального публичного чата:
|
||||
- фиксированный `channelType=100`;
|
||||
- ввод логина второго пользователя;
|
||||
- поиск/подсказки пользователей;
|
||||
- создание канала с каноническим логином из сервера;
|
||||
- опциональное описание;
|
||||
- предупреждение про публичность и хранение в блокчейне.
|
||||
- Обновлены правила документации: имена pending-файлов и описания новых фич рекомендованы на русском.
|
||||
|
||||
- что именно проверять:
|
||||
- В `Настройки разработчика` открыть «Отправлять ошибки на сервер», включить и сохранить.
|
||||
- Сгенерировать UI-ошибку и проверить:
|
||||
- появляется toast об отправке;
|
||||
- запись появляется в `logs/call-delivery-events.log` с `type=ui_error`.
|
||||
- На вкладке `Каналы -> Чаты` проверить новую кнопку «Новый персональный публичный чат».
|
||||
- Проверить форму создания: подсказки логинов, создание с правильным регистром логина, описание и инфоблок.
|
||||
|
||||
- ожидаемый результат:
|
||||
- UI-ошибки начинают отправляться только при включенной настройке.
|
||||
- В логах сервера UI-ошибки отделяются по типу `ui_error`.
|
||||
- Персональный публичный чат создается через отдельный, более понятный пользовательский сценарий.
|
||||
|
||||
- статус:
|
||||
- pending
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
# Мультиаккаунты + улучшенный поиск каналов/чатов
|
||||
|
||||
- краткое описание фичи:
|
||||
- Добавлен long-press на кнопку `Профиль` в нижнем тулбаре.
|
||||
- По удержанию открывается меню с кнопкой `Сменить профиль`.
|
||||
- Добавлен экран `Сменить профиль`:
|
||||
- список уже добавленных аккаунтов;
|
||||
- пометка активного аккаунта;
|
||||
- переключение на другой аккаунт;
|
||||
- кнопки `Добавить аккаунт (Войти)` и `Добавить аккаунт (Регистрация)`.
|
||||
- Сессии нескольких аккаунтов сохраняются локально; при `authorizeSession` аккаунт добавляется/обновляется в списке.
|
||||
- Выход из текущей сессии теперь удаляет только текущий аккаунт из списка аккаунтов.
|
||||
- В `Новый персональный публичный чат` разрешён логин длиной 1 символ (тип канала `100`).
|
||||
- В `Найти канал` улучшен UX:
|
||||
- кнопка `Найти`;
|
||||
- поиск пользователей по началу логина;
|
||||
- понятные сообщения при отсутствии совпадений/каналов.
|
||||
|
||||
- что именно проверять:
|
||||
- Удержать кнопку `Профиль` и открыть `Сменить профиль`.
|
||||
- Проверить отображение активного аккаунта и переключение на другой.
|
||||
- Проверить сценарий `Добавить аккаунт` (войти/зарегистрироваться) без вылета из текущего аккаунта.
|
||||
- Проверить создание персонального публичного чата с логином из 1 символа.
|
||||
- Проверить поиск каналов по префиксу логина и работу кнопки `Найти`.
|
||||
|
||||
- ожидаемый результат:
|
||||
- Переключение между несколькими аккаунтами работает из UI.
|
||||
- Поиск каналов стал управляемым и понятным.
|
||||
- Ограничение 3+ символов для персонального чата снято.
|
||||
|
||||
- статус:
|
||||
- pending
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
# Персональный публичный чат: исправление формата блока и обратный канал
|
||||
|
||||
- краткое описание фичи:
|
||||
- Исправлен формат отправки `CreateChannel` из UI: для создания канала теперь используется версия body `1`, совместимая с серверным парсером.
|
||||
- Убрана ошибка `AddBlock: Некорректный формат блока (BAD_BLOCK_FORMAT)` при создании персонального публичного чата (тип `100`) на актуальном сервере.
|
||||
- В `channel-view` для персонального чата добавлена клиентская склейка диалога:
|
||||
- основной канал `A -> B` (владелец `A`, имя канала `B`, тип `100`);
|
||||
- зеркальный канал `B -> A` (владелец `B`, имя канала `A`, тип `100`);
|
||||
- сообщения обоих каналов показываются в одном диалоге, отсортированном по времени.
|
||||
- Если зеркальный канал не найден, показывается уведомление в шапке канала о том, что у собеседника пока не создан ответный чат.
|
||||
- Исправлена ошибка `Идентификатор канала не готов` при добавлении сообщения в ряде сценариев (например, «мои сторис»): отправка теперь использует фактически загруженный селектор канала, а не только параметры маршрута.
|
||||
- Улучшен резолв канала при открытии из поиска/прямой ссылки:
|
||||
- сначала попытка по `ownerBlockchainName + channelName`;
|
||||
- fallback по `ownerLogin + channelName`;
|
||||
- дополнительный fallback через `GetUser(owner)` с сопоставлением `blockchainName`.
|
||||
Это снижает число ложных `Канал не найден` при открытии сторис/каналов других пользователей.
|
||||
- В форме «Создать канал» (вкладка «Мои») удалён выбор типа канала: создаётся только публичный канал `type=1` с полями «название + описание».
|
||||
- Минимальная длина названия канала изменена с `3` на `1` (новый диапазон: `1..32`).
|
||||
- Перед записью сообщения в канал UI теперь получает актуальное состояние линии канала (последний блок в линии) и строит `TEXT_POST` от свежего `prevLine`, что убирает постоянные конфликты состояния (`bad_prev_line_hash` / `line_err_prev_hash_mismatch`) при добавлении в свои сторис/каналы.
|
||||
|
||||
- что именно проверять:
|
||||
- Создать персональный публичный чат через UI (`Каналы -> Чаты -> Новый персональный публичный чат`) и убедиться, что ошибка `BAD_BLOCK_FORMAT` больше не появляется.
|
||||
- Открыть созданный персональный чат `A -> B`, написать сообщение.
|
||||
- С аккаунта `B` создать зеркальный чат `B -> A`, отправить ответ.
|
||||
- Снова открыть чат у `A` и проверить, что в одном экране видны и исходящие, и входящие сообщения из зеркального канала.
|
||||
- Проверить, что при отсутствии зеркального канала в шапке отображается предупреждение.
|
||||
- Вкладка «Мои сторис»: открыть канал и отправить сообщение кнопкой «Добавить сообщение» — ошибка про неготовый идентификатор не должна появляться.
|
||||
- Вкладка «Найти канал»: открыть чужой сторис/канал по формату `user/channel` и убедиться, что канал открывается (если реально существует и доступен в выдаче).
|
||||
|
||||
- ожидаемый результат:
|
||||
- Персональный публичный чат создаётся без ошибки формата блока.
|
||||
- При наличии зеркального канала переписка отображается единым диалогом.
|
||||
- При отсутствии зеркального канала пользователь видит явное уведомление.
|
||||
- В «мои сторис» сообщение добавляется без ошибки `Идентификатор канала не готов`.
|
||||
- Открытие чужих каналов из поиска/ссылки работает стабильнее без ложного `Канал не найден`.
|
||||
|
||||
- статус:
|
||||
- pending
|
||||
Reference in New Issue
Block a user