Apply model selection: update global config and chat state
(
&self,
selected: &ModelItem,
_chat_view: &mut ChatView,
chat_state: &mut ChatState,
rt_handle: &tokio::runtime::Handle,
)
| 2140 | |
| 2141 | /// Apply model selection: update global config and chat state |
| 2142 | fn apply_model_selection( |
| 2143 | &self, |
| 2144 | selected: &ModelItem, |
| 2145 | _chat_view: &mut ChatView, |
| 2146 | chat_state: &mut ChatState, |
| 2147 | rt_handle: &tokio::runtime::Handle, |
| 2148 | ) { |
| 2149 | let selected_id = selected.id.clone(); |
| 2150 | let selected_display_name = format!("{} / {}", selected.model_name, selected.name); |
| 2151 | let modes = self.get_mode_agents(rt_handle); |
| 2152 | |
| 2153 | let success = tokio::task::block_in_place(|| { |
| 2154 | rt_handle.block_on(async { |
| 2155 | let config_service = match GlobalConfigManager::get_service().await { |
| 2156 | Ok(s) => s, |
| 2157 | Err(e) => { |
| 2158 | tracing::error!("Failed to get config service: {}", e); |
| 2159 | return false; |
| 2160 | } |
| 2161 | }; |
| 2162 | |
| 2163 | // Update default primary model |
| 2164 | if let Err(e) = config_service |
| 2165 | .set_config("ai.default_models.primary", &selected_id) |
| 2166 | .await |
| 2167 | { |
| 2168 | tracing::error!("Failed to set default primary model: {}", e); |
| 2169 | return false; |
| 2170 | } |
| 2171 | |
| 2172 | // Update agent_models for all modes |
| 2173 | for mode in &modes { |
| 2174 | let path = format!("ai.agent_models.{}", mode.id); |
| 2175 | if let Err(e) = config_service.set_config(&path, &selected_id).await { |
| 2176 | tracing::error!("Failed to set model for mode '{}': {}", mode.id, e); |
| 2177 | } |
| 2178 | } |
| 2179 | |
| 2180 | true |
| 2181 | }) |
| 2182 | }); |
| 2183 | |
| 2184 | if success { |
| 2185 | chat_state.current_model_name = selected_display_name.clone(); |
| 2186 | tracing::info!( |
| 2187 | "Model switched to: {} ({})", |
| 2188 | selected_display_name, |
| 2189 | selected_id |
| 2190 | ); |
| 2191 | } else { |
| 2192 | tracing::error!( |
| 2193 | "Failed to switch model: {} ({})", |
| 2194 | selected_display_name, |
| 2195 | selected_id |
| 2196 | ); |
| 2197 | } |
| 2198 | } |
| 2199 |
no test coverage detected