7.5 KiB
Репосты в каналах и тредах
-
Статус:
future -
Горизонт:
medium -
Ориентир: 1-2 месяца
-
Решение от 2026-05-24: Репосты временно убраны из активной разработки. Фича уже была частично реализована, но не доведена до финальной проверки. Чтобы она не мешала запуску проекта, пользовательский вход в репосты отключён в UI, а сервер больше не принимает новые
TEXT_REPOSTчерезAddBlock.
Что должна делать фича
Репост должен позволять взять сообщение из канала или треда и опубликовать его в один из своих каналов с комментарием.
Ожидаемый пользовательский сценарий после возврата к задаче:
- Пользователь открывает сообщение в канале или треде.
- Нажимает
Репост. - Выбирает один из своих каналов.
- Добавляет комментарий.
- Отправляет репост.
- В целевом канале появляется новый пост-репост.
- У репоста есть переход к исходному сообщению через действие
Оригинал.
Что уже есть в коде
- В блокчейн-формате зарезервирован и описан подтип
TEXT_REPOST (30). - Парсер блокчейна умеет распознавать тело репоста как
TextLineBody. - В UI есть функция сборки тела репоста:
shine-UI/js/services/auth-service.js,makeTextRepostBodyBytes. - В UI есть клиентская операция:
shine-UI/js/services/auth-service.js,addBlockRepost. - В экране канала был обработчик репоста:
shine-UI/js/pages/channel-view.js,onRepost. - В экране треда был обработчик репоста:
shine-UI/js/pages/channel-thread-view.js,onRepost. - Серверная выдача каналов и тредов частично учитывает
TEXT_REPOSTи target-поля:targetBlockchainName,targetBlockNumber,targetBlockHash. - В списке подписок
TEXT_REPOSTсчитается публикацией канала.
Что сейчас отключено
- В
shine-UI/js/pages/channel-view.jsкнопкаРепостбольше не создаётся и не добавляется в список действий сообщения. - В
shine-UI/js/pages/channel-thread-view.jsкнопкаРепостбольше не создаётся и не добавляется в список действий ответа/сообщения треда. - В
shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/blockchain/Net_AddBlock_Handler.javaдобавлена явная временная блокировка: если новый блок имеетtype=1иsubType=TEXT_REPOST (30),AddBlockвозвращает ошибкуrepost_disabled.
Что осталось активным намеренно
- Константа
TEXT_REPOST (30)остаётся в коде и документации как зарезервированный формат. - Парсер блокчейна продолжает знать формат
TEXT_REPOST, чтобы не потерять уже написанную основу и не ломать потенциальное чтение старых тестовых данных. - Код формирования репоста в
auth-service.jsне удалён: его можно будет использовать как основу при возвращении к задаче. - Код отображения target-полей и перехода к оригиналу не удалён: он нужен для будущей проверки и возможной совместимости с уже созданными тестовыми блоками.
Почему это не лежит в Pending_Features
Dev_Docs/Pending_Features/ предназначена для фич, которые уже реализованы и ждут ручной проверки.
Репосты сейчас не подходят под этот статус: они не должны проверяться как готовая фича, потому что пользовательский сценарий временно закрыт, а серверная запись новых репостов заблокирована. Поэтому старый pending-файл удалён, а задача перенесена сюда как будущая.
Что сделать при возврате к реализации
- Решить, остаётся ли формат
TEXT_REPOST (30)финальным. - Если формат меняется, заранее предупредить пользователя и получить отдельное подтверждение на изменение блокчейн-формата.
- Вернуть UI-кнопки репоста в:
shine-UI/js/pages/channel-view.js;shine-UI/js/pages/channel-thread-view.js.
- Снять временную блокировку
repost_disabledв:shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/blockchain/Net_AddBlock_Handler.java. - Проверить
auth-service.js:makeTextRepostBodyBytes;addBlockRepost;- актуализацию вершины блокчейна перед
AddBlock; - корректность target-полей исходного сообщения.
- Проверить серверное чтение:
GetChannelMessages;GetMessageThread;- отображение
targetBlockchainName,targetBlockNumber,targetBlockHash.
- Добавить или обновить тесты на успешный репост и отказ некорректных target-полей.
- Обновить документацию:
Dev_Docs/Blockchain/11_TEXT_Blocks.md;Dev_Docs/Blockchain/CHANGELOG.md;Dev_Docs/API/04_Add_Block_to_Blockchain_API.md;- документы API чтения каналов/тредов, если изменятся поля ответа.
- После реализации перенести задачу из
Dev_Docs/Future_Features/вDev_Docs/Pending_Features/как фичу, требующую ручной проверки.
Минимальный чек-лист ручной проверки в будущем
- Репост из сообщения канала в свой канал.
- Репост из ответа в треде в свой канал.
- Ошибка при попытке репоста в чужой канал.
- Переход
Оригинализ репоста к исходному сообщению. - Корректное отображение комментария к репосту.
- Корректная работа после перезагрузки страницы.
- Отсутствие поломки обычных постов, ответов, лайков и отправки ссылки.