fixes
This commit is contained in:
@@ -8,7 +8,13 @@ use ratatui::{
|
||||
use crate::app::App;
|
||||
use super::{chat_list, messages, footer};
|
||||
|
||||
/// Порог ширины для компактного режима (одна панель)
|
||||
const COMPACT_WIDTH: u16 = 80;
|
||||
|
||||
pub fn render(f: &mut Frame, app: &mut App) {
|
||||
let area = f.area();
|
||||
let is_compact = area.width < COMPACT_WIDTH;
|
||||
|
||||
let chunks = Layout::default()
|
||||
.direction(Direction::Vertical)
|
||||
.constraints([
|
||||
@@ -16,20 +22,33 @@ pub fn render(f: &mut Frame, app: &mut App) {
|
||||
Constraint::Min(0), // Main content
|
||||
Constraint::Length(1), // Commands footer
|
||||
])
|
||||
.split(f.area());
|
||||
.split(area);
|
||||
|
||||
render_folders(f, chunks[0], app);
|
||||
|
||||
let main_chunks = Layout::default()
|
||||
.direction(Direction::Horizontal)
|
||||
.constraints([
|
||||
Constraint::Percentage(30), // Chat list
|
||||
Constraint::Percentage(70), // Messages area
|
||||
])
|
||||
.split(chunks[1]);
|
||||
if is_compact {
|
||||
// Компактный режим: показываем либо список чатов, либо открытый чат
|
||||
if app.selected_chat_id.is_some() {
|
||||
// Чат открыт — показываем только сообщения
|
||||
messages::render(f, chunks[1], app);
|
||||
} else {
|
||||
// Чат не открыт — показываем только список чатов
|
||||
chat_list::render(f, chunks[1], app);
|
||||
}
|
||||
} else {
|
||||
// Обычный режим: две панели
|
||||
let main_chunks = Layout::default()
|
||||
.direction(Direction::Horizontal)
|
||||
.constraints([
|
||||
Constraint::Percentage(30), // Chat list
|
||||
Constraint::Percentage(70), // Messages area
|
||||
])
|
||||
.split(chunks[1]);
|
||||
|
||||
chat_list::render(f, main_chunks[0], app);
|
||||
messages::render(f, main_chunks[1], app);
|
||||
}
|
||||
|
||||
chat_list::render(f, main_chunks[0], app);
|
||||
messages::render(f, main_chunks[1], app);
|
||||
footer::render(f, chunks[2], app);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user