use ratatui::{ layout::Rect, style::{Color, Style}, widgets::Paragraph, Frame, }; use crate::app::App; use crate::tdlib::NetworkState; pub fn render(f: &mut Frame, area: Rect, app: &App) { // Индикатор состояния сети let network_indicator = match app.td_client.network_state { NetworkState::Ready => "", NetworkState::WaitingForNetwork => "⚠ Нет сети | ", NetworkState::ConnectingToProxy => "⏳ Прокси... | ", NetworkState::Connecting => "⏳ Подключение... | ", NetworkState::Updating => "⏳ Обновление... | ", }; let status = if let Some(msg) = &app.status_message { format!(" {}{} ", network_indicator, msg) } else if let Some(err) = &app.error_message { format!(" {}Error: {} ", network_indicator, err) } else if app.is_searching { format!(" {}↑/↓: Navigate | Enter: Select | Esc: Cancel ", network_indicator) } else if app.selected_chat_id.is_some() { format!(" {}↑/↓: Scroll | Ctrl+U: Profile | Enter: Send | Esc: Close | Ctrl+R: Refresh | Ctrl+C: Quit ", network_indicator) } else { format!(" {}↑/↓: Navigate | Enter: Open | Ctrl+S: Search | Ctrl+R: Refresh | Ctrl+C: Quit ", network_indicator) }; let style = if matches!(app.td_client.network_state, NetworkState::WaitingForNetwork) { Style::default().fg(Color::Red) } else if !matches!(app.td_client.network_state, NetworkState::Ready) { Style::default().fg(Color::Cyan) } else if app.error_message.is_some() { Style::default().fg(Color::Red) } else if app.status_message.is_some() { Style::default().fg(Color::Yellow) } else { Style::default().fg(Color::DarkGray) }; let footer = Paragraph::new(status).style(style); f.render_widget(footer, area); }