(&mut self)
| 2796 | } |
| 2797 | |
| 2798 | fn sync_current_model_variant(&mut self) { |
| 2799 | let Some(model_ref) = self.context.current_model.read().clone() else { |
| 2800 | self.context.set_model_variant(None); |
| 2801 | return; |
| 2802 | }; |
| 2803 | let (model_key, explicit_variant) = |
| 2804 | parse_model_ref_selection(&model_ref, &self.available_models, &self.model_variants); |
| 2805 | if let Some(explicit) = explicit_variant { |
| 2806 | self.model_variant_selection |
| 2807 | .insert(model_key.clone(), Some(explicit.clone())); |
| 2808 | self.context.set_model_variant(Some(explicit)); |
| 2809 | return; |
| 2810 | } |
| 2811 | let selected = self |
| 2812 | .model_variant_selection |
| 2813 | .get(&model_key) |
| 2814 | .cloned() |
| 2815 | .flatten(); |
| 2816 | let available = self.model_variants.get(&model_key); |
| 2817 | let valid = selected.filter(|value| { |
| 2818 | available |
| 2819 | .map(|items| items.iter().any(|item| item == value)) |
| 2820 | .unwrap_or(false) |
| 2821 | }); |
| 2822 | if valid.is_none() { |
| 2823 | self.model_variant_selection.insert(model_key, None); |
| 2824 | } |
| 2825 | self.context.set_model_variant(valid); |
| 2826 | } |
| 2827 | |
| 2828 | fn cycle_model_variant(&mut self) { |
| 2829 | let Some(model_ref) = self.context.current_model.read().clone() else { |
no test coverage detected