Skip to main content

codetether_agent/tui/app/
session_sync.rs

1use crate::session::list_all_sessions_for_directory;
2use crate::tui::app::state::App;
3use crate::tui::models::ViewMode;
4
5pub async fn refresh_sessions(app: &mut App, cwd: &std::path::Path) {
6    tracing::info!(cwd = %cwd.display(), "refresh_sessions: starting");
7    match list_all_sessions_for_directory(cwd).await {
8        Ok(sessions) => {
9            tracing::info!(count = sessions.len(), "refresh_sessions: loaded sessions");
10            app.state.sessions = sessions;
11            if app.state.selected_session >= app.state.filtered_sessions().len() {
12                app.state.selected_session = app.state.filtered_sessions().len().saturating_sub(1);
13            }
14            if app.state.sessions.is_empty() {
15                app.state.status = "No sessions found for this workspace".to_string();
16            }
17        }
18        Err(err) => {
19            tracing::error!(error = %err, "refresh_sessions: failed");
20            app.state.status = format!("Failed to list sessions: {err}");
21            app.state.sessions.clear();
22            app.state.selected_session = 0;
23        }
24    }
25}
26
27pub fn return_to_chat(app: &mut App) {
28    app.state.set_view_mode(ViewMode::Chat);
29    app.state.status = "Back to chat".to_string();
30}