Добавить просмотр лайков сообщений канала

This commit is contained in:
AidarKC
2026-09-09 17:01:13 +03:00
parent 9f77c54955
commit 2d059e9ff5
11 changed files with 595 additions and 20 deletions
+66 -8
View File
@@ -14,13 +14,16 @@
3. `GetMessageThread` — отдает дерево обсуждения вокруг конкретного сообщения:
предки, фокус-сообщение, потомки.
4. `GetPersonalDiary` — отдает виртуальную ленту `Личный дневник`, собранную из `STATUS_ACTION` текущего пользователя.
4. `GetMessageLikes` — отдает списки пользователей, поставивших лайк сообщению,
сгруппированные для UI по статусу профиля.
5. `GetChannelsCounters` — отдает счетчики разделов каналов для пользователя.
5. `GetPersonalDiary` — отдает виртуальную ленту `Личный дневник`, собранную из `STATUS_ACTION` текущего пользователя.
6. `ListGroupChats200` — отдает список групповых чатов типа `200`.
6. `GetChannelsCounters` — отдает счетчики разделов каналов для пользователя.
7. `GetGroupDialog` — отдает сообщения конкретного группового чата типа `200`.
7. `ListGroupChats200` — отдает список групповых чатов типа `200`.
8. `GetGroupDialog` — отдает сообщения конкретного группового чата типа `200`.
> На первом этапе мы **не используем курсоры** (`nextCursor`) и загружаем полные списки.
>
@@ -266,7 +269,62 @@
---
## 4) GetPersonalDiary
## 4) GetMessageLikes
Возвращает пользователей, которые поставили лайк конкретному сообщению канала.
- `message.blockchainName`, `message.blockNumber`, `message.blockHash` должны указывать на исходное сообщение.
- `limit` ограничивается сервером сверху значением `1000`.
- Пользователи группируются по состоянию профиля:
- `shining``account_role=primary` и `shine_status=shining`;
- `official``account_role=primary`, но без `shine_status=shining`;
- `others` — остальные пользователи.
### Request
```json
{
"op": "GetMessageLikes",
"requestId": "req-4",
"payload": {
"message": {
"blockchainName": "bob-001",
"blockNumber": 140,
"blockHash": "..."
},
"limit": 1000
}
}
```
### Response (success)
```json
{
"op": "GetMessageLikes",
"requestId": "req-4",
"status": 200,
"ok": true,
"payload": {
"shining": [
{ "login": "Alice", "firstName": "Alice", "lastName": "", "avatarAr": "ArweaveTxId..." }
],
"official": [],
"others": [
{ "login": "Carl", "firstName": "", "lastName": "", "avatarAr": "" }
],
"total": 2,
"truncated": false
}
}
```
### Ошибки
- `bad_fields` — не передан `message` или обязательные поля ссылки на сообщение.
- `bad_hash``message.blockHash` не является корректным hex-хэшем блока.
- `internal_error` — внутренняя ошибка чтения.
---
## 5) GetPersonalDiary
Возвращает виртуальный канал `Личный дневник` для самого пользователя.
@@ -289,7 +347,7 @@
---
## 4) GetChannelsCounters
## 6) GetChannelsCounters
### Request
```json
@@ -321,7 +379,7 @@
---
## 5) ListGroupChats200
## 7) ListGroupChats200
### Request
```json
@@ -361,7 +419,7 @@
---
## 6) GetGroupDialog
## 8) GetGroupDialog
### Request
```json