chabeau 0.7.3

A full-screen terminal chat interface that connects to various AI APIs for real-time conversations
Documentation
use super::{App, AppActionContext, AppCommand, StatusAction};

pub(super) fn handle_status_action(
    app: &mut App,
    action: StatusAction,
    ctx: AppActionContext,
) -> Option<AppCommand> {
    match action {
        StatusAction::SetStatus { message } => {
            set_status_message(app, message, ctx);
            None
        }
        StatusAction::ClearStatus => {
            app.clear_status();
            None
        }
    }
}

pub(crate) fn set_status_message(app: &mut App, message: String, ctx: AppActionContext) {
    app.conversation().set_status(message);
    if ctx.term_width > 0 && ctx.term_height > 0 {
        let input_area_height = app.input_area_height(ctx.term_width);
        let mut conversation = app.conversation();
        let available_height =
            conversation.calculate_available_height(ctx.term_height, input_area_height);
        conversation.update_scroll_position(available_height, ctx.term_width);
    }
}