SHA256
Improve direct message history and SQLite resilience
This commit is contained in:
@@ -176,7 +176,72 @@
|
||||
}
|
||||
```
|
||||
|
||||
## 7. `AckSessionDelivery`
|
||||
## 7. `GetDirectMessages`
|
||||
|
||||
Требует авторизации. Возвращает историю диалога с конкретным собеседником страницами.
|
||||
|
||||
Важно:
|
||||
|
||||
- начиная с 22 июля 2026 года сервер больше не высылает старую DM-историю автоматически при логине;
|
||||
- после подключения клиент должен сам запросить первую страницу диалога;
|
||||
- новые realtime-сообщения по-прежнему приходят событием `SignedMessageArrived`.
|
||||
- в `GetDirectMessages` сервер отдаёт только обычные chat-сообщения (`type=1/2`), без read-receipt и delete/tombstone.
|
||||
|
||||
### Запрос
|
||||
|
||||
```json
|
||||
{
|
||||
"op": "GetDirectMessages",
|
||||
"requestId": "dm-history-001",
|
||||
"payload": {
|
||||
"peerLogin": "bob",
|
||||
"limit": 50,
|
||||
"beforeTimeMs": 1774700000123,
|
||||
"beforeMessageKey": "alice|bob|1774700000123|123456789|1"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`beforeTimeMs` и `beforeMessageKey` необязательны. Если их нет, сервер вернёт самую новую страницу.
|
||||
|
||||
### Успешный ответ
|
||||
|
||||
```json
|
||||
{
|
||||
"op": "GetDirectMessages",
|
||||
"requestId": "dm-history-001",
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"payload": {
|
||||
"login": "alice",
|
||||
"peerLogin": "bob",
|
||||
"limit": 50,
|
||||
"hasMore": true,
|
||||
"nextBeforeTimeMs": 1774699999000,
|
||||
"nextBeforeMessageKey": "alice|bob|1774699999000|123456780|2",
|
||||
"messages": [
|
||||
{
|
||||
"messageKey": "alice|bob|1774700000123|123456789|1",
|
||||
"baseKey": "alice|bob|1774700000123|123456789",
|
||||
"fromLogin": "alice",
|
||||
"toLogin": "bob",
|
||||
"messageType": 1,
|
||||
"timeMs": 1774700000123,
|
||||
"nonce": 123456789,
|
||||
"revisionTimeMs": 0,
|
||||
"reencryptedAtMs": 0,
|
||||
"createdAtMs": 1774700001123,
|
||||
"readAtMs": 1774700001456,
|
||||
"blobB64": "BASE64_SIGNED_BLOCK"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Для следующей страницы клиент должен передать `nextBeforeTimeMs` и `nextBeforeMessageKey` из предыдущего ответа.
|
||||
|
||||
## 8. `AckSessionDelivery`
|
||||
|
||||
Требует авторизации. Подтверждает доставку в текущую сессию.
|
||||
|
||||
@@ -192,7 +257,7 @@
|
||||
}
|
||||
```
|
||||
|
||||
## 8. Событие `SignedMessageArrived`
|
||||
## 9. Событие `SignedMessageArrived`
|
||||
|
||||
Сервер присылает его по WebSocket в активные сессии адресата.
|
||||
|
||||
@@ -217,7 +282,7 @@
|
||||
|
||||
Для типов `5/6/7/8` событие тоже приходит в таком же конверте, но логика применения определяется `messageType` и бинарным `blobB64`.
|
||||
|
||||
## 9. `CallInviteBroadcast`
|
||||
## 10. `CallInviteBroadcast`
|
||||
|
||||
Требует авторизации. Шлёт приглашение к звонку в активные сессии `toLogin`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user