codetether_agent/tui/app/
session_sync.rs1use 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}