MCPcopy Create free account
hub / github.com/GCWing/BitFun / show_session_selector

Method show_session_selector

src/apps/cli/src/modes/chat.rs:3310–3359  ·  view source on GitHub ↗

Show session selector popup with all available sessions

(
        &self,
        chat_view: &mut ChatView,
        chat_state: &mut ChatState,
        rt_handle: &tokio::runtime::Handle,
    )

Source from the content-addressed store, hash-verified

3308
3309 /// Show session selector popup with all available sessions
3310 fn show_session_selector(
3311 &self,
3312 chat_view: &mut ChatView,
3313 chat_state: &mut ChatState,
3314 rt_handle: &tokio::runtime::Handle,
3315 ) {
3316 let agent = self.agent.clone();
3317 let current_session_id = chat_state.core_session_id.clone();
3318
3319 let sessions = tokio::task::block_in_place(|| {
3320 rt_handle.block_on(async {
3321 agent
3322 .coordinator()
3323 .list_sessions(&agent.workspace_path_buf())
3324 .await
3325 .unwrap_or_default()
3326 })
3327 });
3328
3329 if sessions.is_empty() {
3330 chat_state.add_system_message("No sessions found.".to_string());
3331 return;
3332 }
3333
3334 let session_items: Vec<SessionItem> = sessions
3335 .into_iter()
3336 .map(|s| {
3337 let last_activity = {
3338 let elapsed = s.last_activity_at.elapsed().unwrap_or_default();
3339 if elapsed.as_secs() < 60 {
3340 "just now".to_string()
3341 } else if elapsed.as_secs() < 3600 {
3342 format!("{}m ago", elapsed.as_secs() / 60)
3343 } else if elapsed.as_secs() < 86400 {
3344 format!("{}h ago", elapsed.as_secs() / 3600)
3345 } else {
3346 format!("{}d ago", elapsed.as_secs() / 86400)
3347 }
3348 };
3349 SessionItem {
3350 session_id: s.session_id,
3351 session_name: s.session_name,
3352 last_activity,
3353 workspace: self.workspace.clone(),
3354 }
3355 })
3356 .collect();
3357
3358 chat_view.show_session_selector(session_items, Some(current_session_id));
3359 }
3360
3361 /// Handle session deletion from the session selector
3362 fn handle_session_delete(

Callers 2

handle_palette_actionMethod · 0.45
handle_commandMethod · 0.45

Calls 7

add_system_messageMethod · 0.80
collectMethod · 0.80
cloneMethod · 0.45
list_sessionsMethod · 0.45
coordinatorMethod · 0.45
workspace_path_bufMethod · 0.45
is_emptyMethod · 0.45

Tested by

no test coverage detected