use ratatui::prelude::*;
use super::app::{App, Screen};
use super::views;
use super::widgets::status_bar;
pub fn render(frame: &mut Frame, app: &App) {
let area = frame.area();
let layout = Layout::vertical([Constraint::Min(0), Constraint::Length(1)]).split(area);
let content = layout[0];
let bar = layout[1];
let top = app.current_screen().clone();
let host = if matches!(top, Screen::Help) {
app.screen_below_top().cloned().unwrap_or(Screen::Home)
} else {
top.clone()
};
render_screen(frame, app, content, &host);
if matches!(top, Screen::Help) {
views::help_overlay::render(frame, app, content);
}
status_bar::render(frame, app, bar);
}
fn render_screen(frame: &mut Frame, app: &App, area: Rect, screen: &Screen) {
match screen {
Screen::Home => views::home::render(frame, app, area),
Screen::SignInRegion => views::sign_in_region::render(frame, app, area),
Screen::SignInMethod => views::sign_in_method::render(frame, app, area),
Screen::SignInBrowser => views::sign_in_browser::render(frame, app, area),
Screen::SignInApiKey => views::sign_in_api_key::render(frame, app, area),
Screen::LogoutConfirm => {
views::home::render(frame, app, area);
views::logout_confirm::render(frame, app, area);
}
Screen::Help => views::home::render(frame, app, area),
}
}