@@ -30,7 +30,8 @@ public static class PluginManager
3030 private static IPublicAPI api = null ;
3131 private static IPublicAPI API => api ??= Ioc . Default . GetRequiredService < IPublicAPI > ( ) ;
3232
33- private static readonly ConcurrentDictionary < string , PluginPair > _allPlugins = [ ] ;
33+ private static List < PluginPair > _allLoadedPlugins ;
34+ private static readonly ConcurrentDictionary < string , PluginPair > _allInitializedPlugins = [ ] ;
3435 private static readonly ConcurrentDictionary < string , PluginPair > _globalPlugins = [ ] ;
3536 private static readonly ConcurrentDictionary < string , PluginPair > _nonGlobalPlugins = [ ] ;
3637
@@ -192,20 +193,17 @@ private static void DeletePythonBinding()
192193 /// Load plugins from the directories specified in Directories.
193194 /// </summary>
194195 /// <param name="settings"></param>
195- /// <returns></returns>
196- public static List < PluginPair > LoadPlugins ( PluginsSettings settings )
196+ public static void LoadPlugins ( PluginsSettings settings )
197197 {
198198 var metadatas = PluginConfig . Parse ( Directories ) ;
199199 Settings = settings ;
200200 Settings . UpdatePluginSettings ( metadatas ) ;
201201
202202 // Load plugins
203- var allPlugins = PluginsLoader . Plugins ( metadatas , Settings ) ;
203+ _allLoadedPlugins = PluginsLoader . Plugins ( metadatas , Settings ) ;
204204
205205 // Since dotnet plugins need to get assembly name first, we should update plugin directory after loading plugins
206206 UpdatePluginDirectory ( metadatas ) ;
207-
208- return allPlugins ;
209207 }
210208
211209 private static void UpdatePluginDirectory ( List < PluginMetadata > metadatas )
@@ -238,14 +236,13 @@ private static void UpdatePluginDirectory(List<PluginMetadata> metadatas)
238236 /// <summary>
239237 /// Initialize all plugins asynchronously.
240238 /// </summary>
241- /// <param name="allPlugins">List of all plugins to initialize.</param>
242239 /// <param name="register">The register to register results updated event for each plugin.</param>
243240 /// <returns>return the list of failed to init plugins or null for none</returns>
244- public static async Task InitializePluginsAsync ( List < PluginPair > allPlugins , IResultUpdateRegister register )
241+ public static async Task InitializePluginsAsync ( IResultUpdateRegister register )
245242 {
246243 var failedPlugins = new ConcurrentQueue < PluginPair > ( ) ;
247244
248- var initTasks = allPlugins . Select ( pair => Task . Run ( async ( ) =>
245+ var initTasks = _allLoadedPlugins . Select ( pair => Task . Run ( async ( ) =>
249246 {
250247 try
251248 {
@@ -275,7 +272,7 @@ public static async Task InitializePluginsAsync(List<PluginPair> allPlugins, IRe
275272
276273 // Even if the plugin cannot be initialized, we still need to add it in all plugin list so that
277274 // we can remove the plugin from Plugin or Store page or Plugin Manager plugin.
278- _allPlugins . TryAdd ( pair . Metadata . ID , pair ) ;
275+ _allInitializedPlugins . TryAdd ( pair . Metadata . ID , pair ) ;
279276 return ;
280277 }
281278
@@ -348,7 +345,7 @@ private static void AddPluginToLists(PluginPair pair)
348345 {
349346 _externalPreviewPlugins . Add ( pair ) ;
350347 }
351- _allPlugins . TryAdd ( pair . Metadata . ID , pair ) ;
348+ _allInitializedPlugins . TryAdd ( pair . Metadata . ID , pair ) ;
352349 }
353350
354351 #endregion
@@ -519,9 +516,14 @@ public static PluginPair GetPluginForId(string id)
519516
520517 #region Get Plugin List
521518
519+ public static List < PluginPair > GetAllLoadedPlugins ( )
520+ {
521+ return [ .. _allLoadedPlugins ] ;
522+ }
523+
522524 public static List < PluginPair > GetAllInitializedPlugins ( )
523525 {
524- return [ .. _allPlugins . Values ] ;
526+ return [ .. _allInitializedPlugins . Values ] ;
525527 }
526528
527529 public static List < PluginPair > GetGlobalPlugins ( )
@@ -884,7 +886,7 @@ internal static async Task<bool> UninstallPluginAsync(PluginMetadata plugin, boo
884886 string . Format ( API . GetTranslation ( "failedToRemovePluginCacheMessage" ) , plugin . Name ) ) ;
885887 }
886888 Settings . RemovePluginSettings ( plugin . ID ) ;
887- _allPlugins . TryRemove ( plugin . ID , out var item ) ;
889+ _allInitializedPlugins . TryRemove ( plugin . ID , out var item ) ;
888890 _globalPlugins . TryRemove ( plugin . ID , out var item1 ) ;
889891 var keysToRemove = _nonGlobalPlugins . Where ( p => p . Value . Metadata . ID == plugin . ID ) . Select ( p => p . Key ) . ToList ( ) ;
890892 foreach ( var key in keysToRemove )
0 commit comments