asterai 1.0.0-alpha.13

CLI for asterai - the portable AI compute platform
use crate::tui::Tty;
use crate::tui::app::{App, Screen};
use crossterm::event::Event;
use ratatui::prelude::*;

pub mod auth;
pub mod chat;
pub mod picker;
pub mod setup;

pub fn render(f: &mut Frame, app: &App) {
    match &app.screen {
        Screen::Auth(state) => auth::render(f, state),
        Screen::Picker(state) => picker::render(f, state),
        Screen::Setup(state) => setup::render(f, state),
        Screen::Chat(state) => chat::render(f, state, app),
    }
}

pub async fn handle_event(
    app: &mut App,
    event: Event,
    terminal: &mut Terminal<CrosstermBackend<Tty>>,
) -> eyre::Result<()> {
    match &app.screen {
        Screen::Auth(_) => auth::handle_event(app, event, terminal).await,
        Screen::Picker(_) => picker::handle_event(app, event, terminal).await,
        Screen::Setup(_) => setup::handle_event(app, event, terminal).await,
        Screen::Chat(_) => chat::handle_event(app, event).await,
    }
}