Files
telegram-tui/docs/TDLIB_INTEGRATION.md
2026-05-17 03:56:04 +03:00

46 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TDLib integration notes
Проект использует `tdlib-rs` с feature `download-tdlib`. Актуальные версии смотри в `Cargo.toml`.
## Runtime
- Credentials: `~/.config/tele-tui/credentials`, fallback `.env`.
- TDLib data: `~/.local/share/tele-tui/accounts/{name}/tdlib_data/`.
- Каждый аккаунт защищён lock file: `~/.local/share/tele-tui/accounts/{name}/tele-tui.lock`.
## Auth flow
TDLib авторизация идёт через `updateAuthorizationState`:
```text
WaitTdlibParameters -> WaitPhoneNumber -> WaitCode -> WaitPassword? -> Ready
```
UI должен показывать понятное состояние и не блокировать event loop дольше необходимого.
## Updates
- Receive loop передаёт в UI пару `(client_id, Update)`.
- UI применяет update только если `client_id == active_client_id`.
- При переключении аккаунта pending updates старого клиента должны игнорироваться.
Это критично для multi-account: без фильтрации старый клиент может испортить state нового аккаунта.
## Messages
- История грузится порциями, открытие чата не должно блокировать первый redraw.
- Reply-info и downloads уходят в фоновые задачи.
- Read/unread для исходящих сообщений должен опираться на `last_read_outbox_message_id`.
- Send/edit/delete/forward/search проходят через `TdClientTrait`, чтобы тесты могли использовать `FakeTdClient`.
## Folders
Telegram-папки доступны через TDLib chat folders и переключаются клавишами `1`-`9`.
## Практические правила
- Не добавлять долгие `await` в UI loop без явной причины.
- Не смешивать updates разных `client_id`.
- Не обходить `TdClientTrait` в коде, который должен тестироваться.
- Не хранить TDLib database в корне проекта; использовать XDG account paths.