Исправить синхронизацию прочитанных каналов

This commit is contained in:
AidarKC
2026-09-10 12:33:24 +03:00
parent 107f85b818
commit 4c7e71f21f
11 changed files with 125 additions and 60 deletions
+6 -3
View File
@@ -29,9 +29,9 @@
> На первом этапе мы **не используем курсоры** (`nextCursor`) и загружаем полные списки.
>
> `unreadCount` для канала считается по `user_settings`.
> `unreadCount` для канала считается по подписанному состоянию чтения канала.
> Для собственных каналов владельцу всегда возвращается `unreadCount = 0`, чтобы его собственные публикации не становились «новыми» для него самого.
> Если для пары `ownerBlockchainName/channelName` ещё нет записи, канал временно считается полностью прочитанным; UI при загрузке списка каналов создаёт baseline на текущем `messagesCount`. После этого новые публикации увеличивают `unreadCount` до продвижения курсора чтения.
> Если для пары `ownerBlockchainName/channelName` ещё нет записи, канал временно считается полностью прочитанным. После появления записи новые публикации увеличивают `unreadCount` до продвижения курсора чтения.
---
@@ -112,6 +112,7 @@
"channelRoot": { "blockNumber": 456, "blockHash": "..." }
},
"messagesCount": 90,
"readCount": 0,
"unreadCount": 0,
"readStateInitialized": false,
"lastMessage": {
@@ -148,6 +149,8 @@
}
```
`limit` необязателен. Если поле отсутствует или равно `0`, сервер возвращает всю ленту канала. Положительное значение ограничивает количество сообщений для совместимых клиентов.
### Response (success)
```json
{
@@ -539,7 +542,7 @@ SHiNe/ChannelReadState:<login>|<owner_bch_name>|<channel_name>|<time_ms>|<read_c
- `user_not_found`
- `channel_not_found`
- `message_not_found`
- `limit_too_large`
- `bad_limit`
- `channel_name_already_exists`
- `CHANNEL_NOT_FOLLOWED`
- `CHANNEL_NOT_FOUND`