(&mut self, direction: i8)
| 2534 | } |
| 2535 | |
| 2536 | fn cycle_agent(&mut self, direction: i8) { |
| 2537 | self.refresh_agent_dialog(); |
| 2538 | |
| 2539 | let agents = self.agent_select.agents(); |
| 2540 | if agents.is_empty() { |
| 2541 | return; |
| 2542 | } |
| 2543 | |
| 2544 | let current = self.context.current_agent.read().clone(); |
| 2545 | let current_index = agents |
| 2546 | .iter() |
| 2547 | .position(|agent| agent.name == current) |
| 2548 | .unwrap_or(0); |
| 2549 | |
| 2550 | let len = agents.len(); |
| 2551 | let next_index = if direction >= 0 { |
| 2552 | (current_index + 1) % len |
| 2553 | } else if current_index == 0 { |
| 2554 | len - 1 |
| 2555 | } else { |
| 2556 | current_index - 1 |
| 2557 | }; |
| 2558 | let next_agent = agents[next_index].name.clone(); |
| 2559 | |
| 2560 | self.context.set_agent(next_agent); |
| 2561 | self.sync_prompt_spinner_style(); |
| 2562 | } |
| 2563 | |
| 2564 | fn refresh_session_list_dialog(&mut self) { |
| 2565 | let Some(client) = self.context.get_api_client() else { |
no test coverage detected