Skip to content

Commit 11e05f7

Browse files
committed
Add all loaded plugins
1 parent 566572b commit 11e05f7

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

Flow.Launcher.Core/Plugin/PluginManager.cs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

Flow.Launcher/App.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,9 @@ await API.StopwatchLogInfoAsync(ClassName, "Startup cost", async () =>
249249

250250
AbstractPluginEnvironment.PreStartPluginExecutablePathUpdate(_settings);
251251

252-
var allPlugins = PluginManager.LoadPlugins(_settings.PluginSettings);
252+
PluginManager.LoadPlugins(_settings.PluginSettings);
253253

254-
await PluginManager.InitializePluginsAsync(allPlugins, _mainVM);
254+
await PluginManager.InitializePluginsAsync(_mainVM);
255255

256256
AutoPluginUpdates();
257257

0 commit comments

Comments
 (0)