Deleting plugins is now available

This commit is contained in:
2024-02-28 13:57:12 +02:00
parent 3c3c6a1301
commit fd9cd49844
17 changed files with 128 additions and 300 deletions

View File

@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using PluginManager.Online.Helpers;
using PluginManager.Others;
@@ -68,11 +70,11 @@ public class PluginsManager
await JsonManager.SaveToJsonFile( Config.AppSettings["PluginDatabase"],installedPlugins);
}
public async Task AppendPluginToDatabase(string pluginName, PluginVersion version)
public async Task AppendPluginToDatabase(PluginInfo pluginData)
{
List<PluginInfo> installedPlugins = await JsonManager.ConvertFromJson<List<PluginInfo>>(await File.ReadAllTextAsync(Config.AppSettings["PluginDatabase"]));
installedPlugins.Add(new PluginInfo(pluginName, version));
installedPlugins.Add(pluginData);
await JsonManager.SaveToJsonFile( Config.AppSettings["PluginDatabase"],installedPlugins);
}
@@ -96,6 +98,43 @@ public class PluginsManager
}
}
}
public async Task<bool> MarkPluginToUninstall(string pluginName)
{
List<PluginInfo> installedPlugins = await GetInstalledPlugins();
PluginInfo? info = installedPlugins.Find(info => info.PluginName == pluginName);
if(info == null)
return false;
await RemovePluginFromDatabase(pluginName);
info.IsMarkedToUninstall = true;
await AppendPluginToDatabase(info);
return true;
}
public async Task UninstallMarkedPlugins()
{
List<PluginInfo> installedPlugins = await GetInstalledPlugins();
foreach(PluginInfo plugin in installedPlugins)
{
if(!plugin.IsMarkedToUninstall) continue;
await UninstallPlugin(plugin);
}
}
private async Task UninstallPlugin(PluginInfo pluginInfo)
{
File.Delete(pluginInfo.FilePath);
foreach(string dependency in pluginInfo.ListOfDependancies)
File.Delete(dependency);
await RemovePluginFromDatabase(pluginInfo.PluginName);
}
}