diff --git a/crates/project/src/context_server_store.rs b/crates/project/src/context_server_store.rs index d13cb37aa8..d2541e1b31 100644 --- a/crates/project/src/context_server_store.rs +++ b/crates/project/src/context_server_store.rs @@ -818,9 +818,9 @@ mod tests { .await; let executor = cx.executor(); - let registry = cx.new(|_| { + let registry = cx.new(|cx| { let mut registry = ContextServerDescriptorRegistry::new(); - registry.register_context_server_descriptor(SERVER_1_ID.into(), fake_descriptor_1); + registry.register_context_server_descriptor(SERVER_1_ID.into(), fake_descriptor_1, cx); registry }); let store = cx.new(|cx| { diff --git a/crates/project/src/context_server_store/extension.rs b/crates/project/src/context_server_store/extension.rs index 825ee0b678..1eaecd987d 100644 --- a/crates/project/src/context_server_store/extension.rs +++ b/crates/project/src/context_server_store/extension.rs @@ -103,19 +103,20 @@ struct ContextServerDescriptorRegistryProxy { impl ExtensionContextServerProxy for ContextServerDescriptorRegistryProxy { fn register_context_server(&self, extension: Arc, id: Arc, cx: &mut App) { self.context_server_factory_registry - .update(cx, |registry, _| { + .update(cx, |registry, cx| { registry.register_context_server_descriptor( id.clone(), Arc::new(ContextServerDescriptor { id, extension }) as Arc, + cx, ) }); } fn unregister_context_server(&self, server_id: Arc, cx: &mut App) { self.context_server_factory_registry - .update(cx, |registry, _| { - registry.unregister_context_server_descriptor_by_id(&server_id) + .update(cx, |registry, cx| { + registry.unregister_context_server_descriptor_by_id(&server_id, cx) }); } } diff --git a/crates/project/src/context_server_store/registry.rs b/crates/project/src/context_server_store/registry.rs index 972ec6642d..b705fcadee 100644 --- a/crates/project/src/context_server_store/registry.rs +++ b/crates/project/src/context_server_store/registry.rs @@ -4,7 +4,7 @@ use anyhow::Result; use collections::HashMap; use context_server::ContextServerCommand; use extension::ContextServerConfiguration; -use gpui::{App, AppContext as _, AsyncApp, Entity, Global, Task}; +use gpui::{App, AppContext as _, AsyncApp, Context, Entity, Global, Task}; use crate::worktree_store::WorktreeStore; @@ -66,12 +66,19 @@ impl ContextServerDescriptorRegistry { &mut self, id: Arc, descriptor: Arc, + cx: &mut Context, ) { self.context_servers.insert(id, descriptor); + cx.notify(); } /// Unregisters the [`ContextServerDescriptor`] for the server with the given ID. - pub fn unregister_context_server_descriptor_by_id(&mut self, server_id: &str) { + pub fn unregister_context_server_descriptor_by_id( + &mut self, + server_id: &str, + cx: &mut Context, + ) { self.context_servers.remove(server_id); + cx.notify(); } }