3.8 KiB
3.8 KiB
Текущий контекст проекта
Статус: Базовая интеграция с TDLib работает
Что сделано
TDLib интеграция
- Подключена библиотека
tdlib-rsv1.1 с автоматической загрузкой TDLib - Реализована авторизация через телефон + код + 2FA пароль
- Сессия сохраняется автоматически в папке
tdlib_data/ - Отключены логи TDLib через FFI вызов
td_executeдо создания клиента - Updates обрабатываются в отдельном потоке через
mpscканал (неблокирующе)
Функциональность
- Загрузка списка чатов (до 50 штук)
- Отображение названия чата и счётчика непрочитанных
- Загрузка истории сообщений при открытии чата
- Отображение сообщений с именем отправителя и временем
Управление
j/kили стрелки — навигация по списку чатовд/л— русская раскладка для j/kEnter— открыть выбранный чатEsc— закрыть открытый чатCtrl+k— перейти к первому чатуCtrl+R— обновить список чатовCtrl+C— выход
Структура проекта
src/
├── main.rs # Точка входа, UI рендеринг, event loop
├── tdlib/
│ ├── mod.rs # Модуль экспорта
│ └── client.rs # TdClient: авторизация, загрузка чатов, сообщений
Ключевые решения
-
Неблокирующий receive: TDLib updates приходят в отдельном потоке и передаются в main loop через
mpsc::channel. Это позволяет UI оставаться отзывчивым. -
FFI для логов: Используем прямой вызов
td_executeдля отключения логов синхронно, до создания клиента, чтобы избежать вывода в терминал. -
Синхронизация чатов: Чаты загружаются асинхронно через updates. Main loop периодически синхронизирует
app.chatsсtd_client.chats.
Зависимости (Cargo.toml)
ratatui = "0.29"
crossterm = "0.28"
tdlib-rs = { version = "1.1", features = ["download-tdlib"] }
tokio = { version = "1", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
dotenvy = "0.15"
Переменные окружения (.env)
API_ID=your_api_id
API_HASH=your_api_hash
Что НЕ сделано / TODO
- Отправка сообщений
- Поиск по чатам
- Папки телеграма (сейчас только "All")
- Отображение онлайн-статуса пользователя
- Markdown форматирование в сообщениях
- Скролл истории сообщений
- Отметка сообщений как прочитанные
- Обновление чатов в реальном времени (новые сообщения)
Известные проблемы
- При первом запуске нужно пройти авторизацию
- Имя отправителя показывается как "User_ID" (нужно загружать имена пользователей)