MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / refresh_model_dialog

Method refresh_model_dialog

crates/opencode-tui/src/app/app.rs:2407–2494  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

2405 }
2406
2407 fn refresh_model_dialog(&mut self) {
2408 let Some(client) = self.context.get_api_client() else {
2409 self.context.set_has_connected_provider(false);
2410 return;
2411 };
2412
2413 let Ok(providers) = client.get_config_providers() else {
2414 self.context.set_has_connected_provider(false);
2415 return;
2416 };
2417 let has_connected_provider = providers.providers.iter().any(|p| !p.models.is_empty());
2418 self.context
2419 .set_has_connected_provider(has_connected_provider);
2420
2421 let mut available_models = HashSet::new();
2422 let mut variant_map: HashMap<String, Vec<String>> = HashMap::new();
2423 let mut models = Vec::new();
2424 let mut context_providers = Vec::new();
2425 for provider in providers.providers {
2426 let provider_id = provider.id.clone();
2427 let provider_name = provider.name.clone();
2428 let mut provider_models = Vec::new();
2429 for model in provider.models {
2430 let model_id = model.id;
2431 let model_name = model.name;
2432 let model_context_window = model.context_window.unwrap_or(0);
2433 let model_ref = format!("{}/{}", provider_id, model_id);
2434 available_models.insert(model_ref.clone());
2435 let entry = variant_map.entry(model_ref).or_default();
2436 for variant in model.variants {
2437 if !entry.iter().any(|value| value == &variant) {
2438 entry.push(variant);
2439 }
2440 }
2441 models.push(Model {
2442 id: model_id.clone(),
2443 name: model_name.clone(),
2444 provider: provider_id.clone(),
2445 context_window: model_context_window,
2446 });
2447 provider_models.push(crate::context::ModelInfo {
2448 id: format!("{}/{}", provider_id, model_id),
2449 name: model_name,
2450 context_window: model_context_window,
2451 max_output_tokens: 0,
2452 supports_vision: false,
2453 supports_tools: true,
2454 });
2455 }
2456 context_providers.push(crate::context::ProviderInfo {
2457 id: provider_id,
2458 name: provider_name,
2459 models: provider_models,
2460 });
2461 }
2462 *self.context.providers.write() = context_providers;
2463 models.sort_by(|a, b| {
2464 a.provider

Callers 3

newMethod · 0.80
handle_eventMethod · 0.80

Calls 11

newFunction · 0.85
get_api_clientMethod · 0.80
get_config_providersMethod · 0.80
is_emptyMethod · 0.80
set_modelsMethod · 0.80
readMethod · 0.80
cloneMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected