Don't block window creation on plugin runtime boot (#616)

This commit is contained in:
Gregory Schier
2026-09-01 09:14:50 -07:00
committed by GitHub
parent 8eebee460e
commit d461c982ec
15 changed files with 183 additions and 105 deletions
+18 -17
View File
@@ -187,24 +187,25 @@ impl PluginManager {
}
let bundled_dirs = plugin_manager.list_bundled_plugin_dirs().await?;
let db = query_manager.connect();
for dir in &bundled_dirs {
if db.get_plugin_by_directory(dir).is_none() {
db.upsert_plugin(
&Plugin {
directory: dir.clone(),
enabled: true,
url: None,
source: PluginSource::Bundled,
..Default::default()
},
&UpdateSource::Background,
)?;
// Scope the db connection so the future stays Send across the await below
let plugins = {
let db = query_manager.connect();
for dir in &bundled_dirs {
if db.get_plugin_by_directory(dir).is_none() {
db.upsert_plugin(
&Plugin {
directory: dir.clone(),
enabled: true,
url: None,
source: PluginSource::Bundled,
..Default::default()
},
&UpdateSource::Background,
)?;
}
}
}
let plugins = db.list_plugins()?;
drop(db);
db.list_plugins()?
};
let init_errors = plugin_manager.initialize_all_plugins(plugins, plugin_context).await;
if !init_errors.is_empty() {