use crate::session::list_all_sessions_for_directory;
use crate::tui::app::state::App;
use crate::tui::models::ViewMode;
pub async fn refresh_sessions(app: &mut App, cwd: &std::path::Path) {
tracing::info!(cwd = %cwd.display(), "refresh_sessions: starting");
match list_all_sessions_for_directory(cwd).await {
Ok(sessions) => {
tracing::info!(count = sessions.len(), "refresh_sessions: loaded sessions");
app.state.sessions = sessions;
if app.state.selected_session >= app.state.filtered_sessions().len() {
app.state.selected_session = app.state.filtered_sessions().len().saturating_sub(1);
}
if app.state.sessions.is_empty() {
app.state.status = "No sessions found for this workspace".to_string();
}
}
Err(err) => {
tracing::error!(error = %err, "refresh_sessions: failed");
app.state.status = format!("Failed to list sessions: {err}");
app.state.sessions.clear();
app.state.selected_session = 0;
}
}
}
pub fn return_to_chat(app: &mut App) {
app.state.set_view_mode(ViewMode::Chat);
app.state.status = "Back to chat".to_string();
}