feat: add API connection state management and update status display

This commit is contained in:
asepharyana
2026-07-12 02:26:53 +07:00
parent a98fdb0c7b
commit d52ee967ee
4 changed files with 22 additions and 21 deletions
+13 -21
View File
@@ -6,23 +6,6 @@ use ratatui::Frame;
use super::theme::Theme;
pub fn draw_status_bar(frame: &mut Frame, area: Rect, state: &crate::app::state::rest::AppStateRest) {
let mode_str = state.mode.name();
let mode_color = match state.mode {
crate::app::state::types::AgentMode::Auto => Theme::MODE_AUTO,
crate::app::state::types::AgentMode::Normal => Theme::MODE_NORMAL,
crate::app::state::types::AgentMode::Plan => Theme::MODE_PLAN,
crate::app::state::types::AgentMode::Yolo => Theme::MODE_YOLO,
};
let mode_indicator = if state.mode.auto_approve() {
"AUTO-APPROVE (UNRESTRICTED)".to_string()
} else {
format!("{}-APPROVE (RESTRICTED)", mode_str.to_uppercase())
};
let session_count = state.sessions.len();
let msg_count = state.transcript_cache.messages.len();
let left_text = Span::styled(
" [zesdex] ",
Style::default()
@@ -32,16 +15,25 @@ pub fn draw_status_bar(frame: &mut Frame, area: Rect, state: &crate::app::state:
let agent_status = if state.turn_in_flight() {
"PROCESSING"
} else {
} else if state.misc.api_connected {
"READY"
} else {
"NO API"
};
let status_color = if state.misc.api_connected {
Theme::MODE_AUTO
} else if state.turn_in_flight() {
Theme::MODE_YOLO
} else {
Theme::DIM
};
let center_text = Span::styled(
format!(" | STATUS: {} | AGENT: {} ", mode_indicator, agent_status),
Style::default().fg(mode_color),
format!(" | {} | {} ", state.settings.provider, agent_status),
Style::default().fg(status_color),
);
let right_text = Span::styled(
format!(" | MSG: {} | SESS: {} ", msg_count, session_count),
format!(" | {} ", state.settings.model),
Style::default().fg(Theme::DIM),
);