MCPcopy Create free account
hub / github.com/Moosync/Moosync / discover_provider_extensions

Method discover_provider_extensions

src-tauri/src/providers/handler.rs:169–221  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

167
168 #[tracing::instrument(level = "debug", skip(self))]
169 pub async fn discover_provider_extensions(&self) -> Result<()> {
170 let ext_handler = get_extension_handler(&self.app_handle);
171 let extensions_res = ext_handler.get_installed_extensions().await?;
172 for extension in extensions_res {
173 let provides = ext_handler
174 .get_provider_scopes(extension.package_name.clone().into())
175 .await;
176 tracing::info!(
177 "Got provider scopes from {} {:?}",
178 extension.package_name,
179 provides
180 );
181 if let Ok(provides) = provides {
182 tracing::info!(
183 "Inserting extension provider {:?} {:?}",
184 extension,
185 provides,
186 );
187
188 let provider = Box::new(ExtensionProvider::new(
189 extension.clone(),
190 provides,
191 self.app_handle.clone(),
192 self.status_tx.clone(),
193 ));
194 let key = {
195 let mut provider_store = self.provider_store.write().await;
196 let key = provider.key();
197 provider_store.insert(key.clone(), provider);
198 tracing::info!("provider_store: {:?}", provider_store.keys());
199 key
200 };
201
202 let provider_store = self.provider_store.clone();
203 async_runtime::spawn(async move {
204 let provider_store = provider_store.read().await;
205 if let Some(provider) = provider_store.get(&key) {
206 let res = provider.initialize().await;
207 if let Err(err) = res {
208 tracing::error!(
209 "Error initializing extension provider {}: {:?}",
210 key,
211 err
212 );
213 }
214 }
215 });
216 }
217
218 self.app_handle.emit("providers-updated", Value::Null)?;
219 }
220 Ok(())
221 }
222
223 #[tracing::instrument(level = "debug", skip(self, key))]
224 pub async fn initialize_provider(&self, key: String) {

Callers 2

extension_updatedMethod · 0.80

Calls 9

get_extension_handlerFunction · 0.85
cloneMethod · 0.80
writeMethod · 0.80
getMethod · 0.80
emitMethod · 0.80
get_provider_scopesMethod · 0.45
keyMethod · 0.45
initializeMethod · 0.45

Tested by

no test coverage detected