This commit is contained in:
Mikhail Kilin
2026-01-30 23:55:01 +03:00
parent 433233d766
commit bba5cbd22d
25 changed files with 5896 additions and 1469 deletions

View File

@@ -1,5 +1,5 @@
use crate::app::App;
use crate::tdlib::client::AuthState;
use crate::tdlib::AuthState;
use ratatui::{
layout::{Alignment, Constraint, Direction, Layout},
style::{Color, Modifier, Style},
@@ -54,7 +54,7 @@ pub fn render(f: &mut Frame, app: &App) {
f.render_widget(title, auth_chunks[0]);
// Instructions and Input based on auth state
match &app.td_client.auth_state {
match &app.td_client.auth_state() {
AuthState::WaitPhoneNumber => {
let instructions = vec![
Line::from("Введите номер телефона в международном формате"),

View File

@@ -66,7 +66,7 @@ fn render_folders(f: &mut Frame, area: Rect, app: &App) {
spans.push(Span::styled(" 1:All ", all_style));
// Папки из TDLib (клавиши 2, 3, 4...)
for (i, folder) in app.td_client.folders.iter().enumerate() {
for (i, folder) in app.td_client.folders().iter().enumerate() {
spans.push(Span::raw(""));
let style = if app.selected_folder_id == Some(folder.id) {

View File

@@ -353,7 +353,7 @@ pub fn render(f: &mut Frame, area: Rect, app: &App) {
let input_height = (input_lines + 2).min(10).max(3);
// Проверяем, есть ли закреплённое сообщение
let has_pinned = app.td_client.current_pinned_message.is_some();
let has_pinned = app.td_client.current_pinned_message().is_some();
let message_chunks = if has_pinned {
Layout::default()
@@ -380,7 +380,7 @@ pub fn render(f: &mut Frame, area: Rect, app: &App) {
// Chat header с typing status
let typing_action = app
.td_client
.typing_status
.typing_status()
.as_ref()
.map(|(_, action, _)| action.clone());
let header_line = if let Some(action) = typing_action {
@@ -419,7 +419,7 @@ pub fn render(f: &mut Frame, area: Rect, app: &App) {
f.render_widget(header, message_chunks[0]);
// Pinned bar (если есть закреплённое сообщение)
if let Some(pinned_msg) = &app.td_client.current_pinned_message {
if let Some(pinned_msg) = &app.td_client.current_pinned_message() {
let pinned_preview: String = pinned_msg.content.chars().take(40).collect();
let ellipsis = if pinned_msg.content.chars().count() > 40 {
"..."
@@ -458,7 +458,7 @@ pub fn render(f: &mut Frame, area: Rect, app: &App) {
// Номер строки, где начинается выбранное сообщение (для автоскролла)
let mut selected_msg_line: Option<usize> = None;
for msg in &app.td_client.current_chat_messages {
for msg in app.td_client.current_chat_messages() {
// Проверяем, выбрано ли это сообщение
let is_selected = selected_msg_id == Some(msg.id);

View File

@@ -1,5 +1,5 @@
use crate::app::App;
use crate::tdlib::client::ProfileInfo;
use crate::tdlib::ProfileInfo;
use ratatui::{
layout::{Alignment, Constraint, Direction, Layout, Rect},
style::{Color, Modifier, Style},