assistant panel: Fix entering credentials not updating view (#15527)
Co-authored-by: Bennet <bennet@zed.dev> Release Notes: - N/A Co-authored-by: Bennet <bennet@zed.dev>
This commit is contained in:
parent
c78ea0df7e
commit
b571bc800d
10 changed files with 92 additions and 52 deletions
|
|
@ -54,9 +54,7 @@ fn register_language_model_providers(
|
|||
registry.register_provider(CloudLanguageModelProvider::new(client.clone(), cx), cx);
|
||||
} else {
|
||||
registry.unregister_provider(
|
||||
&LanguageModelProviderId::from(
|
||||
crate::provider::cloud::PROVIDER_NAME.to_string(),
|
||||
),
|
||||
&LanguageModelProviderId::from(crate::provider::cloud::PROVIDER_ID.to_string()),
|
||||
cx,
|
||||
);
|
||||
}
|
||||
|
|
@ -80,9 +78,12 @@ pub struct ActiveModel {
|
|||
model: Option<Arc<dyn LanguageModel>>,
|
||||
}
|
||||
|
||||
pub struct ActiveModelChanged;
|
||||
pub enum Event {
|
||||
ActiveModelChanged,
|
||||
ProviderStateChanged,
|
||||
}
|
||||
|
||||
impl EventEmitter<ActiveModelChanged> for LanguageModelRegistry {}
|
||||
impl EventEmitter<Event> for LanguageModelRegistry {}
|
||||
|
||||
impl LanguageModelRegistry {
|
||||
pub fn global(cx: &AppContext) -> Model<Self> {
|
||||
|
|
@ -114,7 +115,10 @@ impl LanguageModelRegistry {
|
|||
) {
|
||||
let name = provider.id();
|
||||
|
||||
if let Some(subscription) = provider.subscribe(cx) {
|
||||
let subscription = provider.subscribe(cx, |_, cx| {
|
||||
cx.emit(Event::ProviderStateChanged);
|
||||
});
|
||||
if let Some(subscription) = subscription {
|
||||
subscription.detach();
|
||||
}
|
||||
|
||||
|
|
@ -187,7 +191,7 @@ impl LanguageModelRegistry {
|
|||
provider,
|
||||
model: None,
|
||||
});
|
||||
cx.emit(ActiveModelChanged);
|
||||
cx.emit(Event::ActiveModelChanged);
|
||||
}
|
||||
|
||||
pub fn set_active_model(
|
||||
|
|
@ -202,13 +206,13 @@ impl LanguageModelRegistry {
|
|||
provider,
|
||||
model: Some(model),
|
||||
});
|
||||
cx.emit(ActiveModelChanged);
|
||||
cx.emit(Event::ActiveModelChanged);
|
||||
} else {
|
||||
log::warn!("Active model's provider not found in registry");
|
||||
}
|
||||
} else {
|
||||
self.active_model = None;
|
||||
cx.emit(ActiveModelChanged);
|
||||
cx.emit(Event::ActiveModelChanged);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue