mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Fix plugin settings delete issue
This commit is contained in:
parent
7975ab5882
commit
ce3a3e912a
1 changed files with 27 additions and 10 deletions
|
|
@ -72,15 +72,20 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
{
|
{
|
||||||
foreach (var pluginPair in AllPlugins)
|
foreach (var pluginPair in AllPlugins)
|
||||||
{
|
{
|
||||||
switch (pluginPair.Plugin)
|
await DisposePluginAsync(pluginPair);
|
||||||
{
|
}
|
||||||
case IDisposable disposable:
|
}
|
||||||
disposable.Dispose();
|
|
||||||
break;
|
private static async Task DisposePluginAsync(PluginPair pluginPair)
|
||||||
case IAsyncDisposable asyncDisposable:
|
{
|
||||||
await asyncDisposable.DisposeAsync();
|
switch (pluginPair.Plugin)
|
||||||
break;
|
{
|
||||||
}
|
case IDisposable disposable:
|
||||||
|
disposable.Dispose();
|
||||||
|
break;
|
||||||
|
case IAsyncDisposable asyncDisposable:
|
||||||
|
await asyncDisposable.DisposeAsync();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -565,13 +570,25 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void UninstallPlugin(PluginMetadata plugin, bool removePluginFromSettings, bool removePluginSettings, bool checkModified)
|
internal static async void UninstallPlugin(PluginMetadata plugin, bool removePluginFromSettings, bool removePluginSettings, bool checkModified)
|
||||||
{
|
{
|
||||||
if (checkModified && PluginModified(plugin.ID))
|
if (checkModified && PluginModified(plugin.ID))
|
||||||
{
|
{
|
||||||
throw new ArgumentException($"Plugin {plugin.Name} has been modified");
|
throw new ArgumentException($"Plugin {plugin.Name} has been modified");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (removePluginFromSettings)
|
||||||
|
{
|
||||||
|
// If we want to remove plugin from AllPlugins,
|
||||||
|
// we need to dispose them so that they can release file handles
|
||||||
|
// which can help FL to delete the plugin settings & cache folders successfully
|
||||||
|
var pluginPairs = AllPlugins.FindAll(p => p.Metadata.ID == plugin.ID);
|
||||||
|
foreach (var pluginPair in pluginPairs)
|
||||||
|
{
|
||||||
|
await DisposePluginAsync(pluginPair);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (removePluginSettings)
|
if (removePluginSettings)
|
||||||
{
|
{
|
||||||
// For dotnet plugins, we need to remove their PluginJsonStorage instance
|
// For dotnet plugins, we need to remove their PluginJsonStorage instance
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue