fixes
This commit is contained in:
@@ -6,12 +6,39 @@ mod messages;
|
||||
mod footer;
|
||||
|
||||
use ratatui::Frame;
|
||||
use ratatui::layout::Alignment;
|
||||
use ratatui::style::{Color, Modifier, Style};
|
||||
use ratatui::widgets::Paragraph;
|
||||
use crate::app::{App, AppScreen};
|
||||
|
||||
/// Минимальная ширина терминала
|
||||
const MIN_WIDTH: u16 = 80;
|
||||
/// Минимальная высота терминала
|
||||
const MIN_HEIGHT: u16 = 20;
|
||||
|
||||
pub fn render(f: &mut Frame, app: &mut App) {
|
||||
let area = f.area();
|
||||
|
||||
// Проверяем минимальный размер терминала
|
||||
if area.width < MIN_WIDTH || area.height < MIN_HEIGHT {
|
||||
render_size_warning(f, area.width, area.height);
|
||||
return;
|
||||
}
|
||||
|
||||
match app.screen {
|
||||
AppScreen::Loading => loading::render(f, app),
|
||||
AppScreen::Auth => auth::render(f, app),
|
||||
AppScreen::Main => main_screen::render(f, app),
|
||||
}
|
||||
}
|
||||
|
||||
fn render_size_warning(f: &mut Frame, width: u16, height: u16) {
|
||||
let message = format!(
|
||||
"Терминал слишком мал: {}x{}\n\nМинимум: {}x{}",
|
||||
width, height, MIN_WIDTH, MIN_HEIGHT
|
||||
);
|
||||
let warning = Paragraph::new(message)
|
||||
.style(Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD))
|
||||
.alignment(Alignment::Center);
|
||||
f.render_widget(warning, f.area());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user