7.5 KiB
TTUI - Требование к приложению
Описание приложения
Терминальный интерфейс для telegram
Функциональные требования
Интерфейс
┌─ TTUI ───────────────────────────────────────────────────────────────────────┐ │ 1:All │ 2:Personal │ 3:Work │ 4:Bots │ ├──────────────────────┬───────────────────────────────────────────────────────┤ │ 🔍 Search... │ 👤 Mom (online) │ ├──────────────────────┼───────────────────────────────────────────────────────┤ │ 📌 Saved Messages │ Today, Dec 21│ │ ▌ Mom (2)│ │ │ Boss │ Mom ────────────────────────────────────────── 14:20 │ │ Rust Community │ Привет! Ты покормил кота? │ │ Durov │ │ │ News Channel │ You ─────────────────────────────────────── 14:22 ✓✓ │ │ Spam Bot │ Да, конечно. Купил ему корм. │ │ Wife │ Скоро буду дома. │ │ Team Lead │ │ │ DevOps Chat (9)│ Mom ────────────────────────────────────────── 14:23 │ │ Server Alerts │ Отлично, захвати хлеба. │ │ Gym Bro │ │ │ Design Team │ You ─────────────────────────────────────── 14:25 ✓ │ │ Project X │ Ок. │ │ HR │ │ │ Mom's Friend │ │ │ Taxi Bot │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──────────────────────┼───────────────────────────────────────────────────────┤ │ [User: Online] │ > message │ └──────────────────────┴───────────────────────────────────────────────────────┘ commands
Список желаемого
- футер - список папок в телеграме
- список с чатами - лички и группы, сверху инпут для поиска чата
- основной контент - открытый чат с сообщениями из чата, если никакой чат не открыт, то контент пустой, ничего не показываем. Снизу - инпут для ввода сообщения в чат, который открыт
- снизу списка чата статус онлайн или нет сам пользователь приложения
- при открытии чата должна загружаться история чата, а так же подгружаться новые сообщения от собеседника.
- выделяем сообщения собеседника его никнеймом, группируем его сообщения и разделяем наши сообщения и сообщения собеседника, как на интерфейсе сверху
- отображаем наше сообщение символом
✓, если телеграм подтвердил, что сообщение отправлено, и выделяем✓✓если собеседник прочитал его - при навигации в чате выделяем строку курсивом, при выборе чата (то есть его открытии) ставим в начало символ ▌
(2)— счетчик непрочитанных (можно красить в красный/зеленый).muted— статус чата (серый цвет).@— пинг/меншн.- с видео/картинками/голосовые пока ничего не делаем, ренденим заглушку (с упоминанием что это картинка или видео и тд)
Управление
- ctrl+c или command+c - выход из программы
- "h j k l" - влево, вниз, вверх, вправо (навигация в левом столбце) vim-style управление
- стрелки - управление, так же как и "h j k l"
- "command + 1", "command + 2" и так далее - переключение между папками, которые созданы в телеграме
- из интерфейса "message" - это инпут для ввода сообщения в открытый чат
- ctrl + s - фокус в инпут поиска чата
- Esc - закрытие открытого чата
- command + стрелка вверх (или ctrl + k) - выделяем самый верхний чат (без открытия)
- поддержка русской раскладки: "р о л д" соответствует "h j k l"
**commands**- сюда вставь описания команд, которые есть в приложении
Технологии
Пишем на rust-е
- ratatui - для tui интерфейса
- rust-tdlib - для подключения апи телеграма
Нефункциональные требования
Производительность
- программа должна выдавать 60 фпс
- интерфейс не должен мерцать
- минимальное разрешение - 600 символов, максимального нет, не ограничиваем