Prerequisites - Moved to PluginInfo and FeatureInfo

Features don't have instances until they are enabled so this made sense, Plugins followed suit for consistency's sake
This commit is contained in:
Robert committed 2021-04-28 17:06:47 +02:00
1 parent 0cfddcbbaf
commit 5cae14efd3
8 files changed
+66 -31

No files matched your search

@@ -27,12 +27,12 @@ namespace Artemis.UI.Screens.Plugins
if (pluginOrFeature is Plugin plugin)
{
Plugin = plugin;
Prerequisites = new BindableCollection<PluginPrerequisiteViewModel>(plugin.Prerequisites.Select(p => prerequisitesVmFactory.PluginPrerequisiteViewModel(p, false)));
Prerequisites = new BindableCollection<PluginPrerequisiteViewModel>(plugin.Info.Prerequisites.Select(p => prerequisitesVmFactory.PluginPrerequisiteViewModel(p, false)));
}
else if (pluginOrFeature is PluginFeature feature)
{
Feature = feature;
Prerequisites = new BindableCollection<PluginPrerequisiteViewModel>(feature.Prerequisites.Select(p => prerequisitesVmFactory.PluginPrerequisiteViewModel(p, false)));
Prerequisites = new BindableCollection<PluginPrerequisiteViewModel>(feature.Info.Prerequisites.Select(p => prerequisitesVmFactory.PluginPrerequisiteViewModel(p, false)));
}
else
throw new ArtemisUIException($"Expected plugin or feature to be passed to {nameof(PluginPrerequisitesInstallDialogViewModel)}");
@@ -136,7 +136,10 @@ namespace Artemis.UI.Screens.Plugins
protected override void OnInitialActivate()
{
CanInstall = false;
Task.Run(() => CanInstall = !Plugin.ArePrerequisitesMet());
if (Plugin != null)
Task.Run(() => CanInstall = !Plugin.Info.ArePrerequisitesMet());
else
Task.Run(() => CanInstall = !Feature.Info.ArePrerequisitesMet());
base.OnInitialActivate();
}
@@ -32,12 +32,12 @@ namespace Artemis.UI.Screens.Plugins
if (pluginOrFeature is Plugin plugin)
{
Plugin = plugin;
Prerequisites = new BindableCollection<PluginPrerequisiteViewModel>(plugin.Prerequisites.Select(p => prerequisitesVmFactory.PluginPrerequisiteViewModel(p, true)));
Prerequisites = new BindableCollection<PluginPrerequisiteViewModel>(plugin.Info.Prerequisites.Select(p => prerequisitesVmFactory.PluginPrerequisiteViewModel(p, true)));
}
else if (pluginOrFeature is PluginFeature feature)
{
Feature = feature;
Prerequisites = new BindableCollection<PluginPrerequisiteViewModel>(feature.Prerequisites.Select(p => prerequisitesVmFactory.PluginPrerequisiteViewModel(p, true)));
Prerequisites = new BindableCollection<PluginPrerequisiteViewModel>(feature.Info.Prerequisites.Select(p => prerequisitesVmFactory.PluginPrerequisiteViewModel(p, true)));
}
else
throw new ArtemisUIException($"Expected plugin or feature to be passed to {nameof(PluginPrerequisitesInstallDialogViewModel)}");
@@ -144,7 +144,10 @@ namespace Artemis.UI.Screens.Plugins
{
CanUninstall = false;
// Could be slow so take it off of the UI thread
Task.Run(() => CanUninstall = Plugin.Prerequisites.Any(p => p.IsMet()));
if (Plugin != null)
Task.Run(() => CanUninstall = Plugin.Info.Prerequisites.Any(p => p.IsMet()));
else
Task.Run(() => CanUninstall = Feature.Info.Prerequisites.Any(p => p.IsMet()));
base.OnInitialActivate();
}
@@ -140,13 +140,13 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
public async Task InstallPrerequisites()
{
if (Plugin.Prerequisites.Any())
if (Plugin.Info.Prerequisites.Any())
await ShowPrerequisitesDialog(false);
}
public async Task RemovePrerequisites()
{
if (Plugin.Prerequisites.Any(p => p.UninstallActions.Any()))
if (Plugin.Info.Prerequisites.Any(p => p.UninstallActions.Any()))
{
await ShowPrerequisitesDialog(true);
NotifyOfPropertyChange(nameof(IsEnabled));
@@ -179,6 +179,12 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
if (!confirmed)
return;
// If the plugin or any of its features has uninstall actions, offer to run these
if (Plugin.Info.Prerequisites.Any(p => p.UninstallActions.Any()) || Plugin.Features.Any(f => f.Prerequisites.Any(fp => fp.UninstallActions.Any())))
{
}
try
{
_pluginManagementService.RemovePlugin(Plugin, false);
@@ -236,10 +242,10 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
}
// Check if all prerequisites are met async
if (!Plugin.ArePrerequisitesMet())
if (!Plugin.Info.ArePrerequisitesMet())
{
await ShowPrerequisitesDialog(false);
if (!Plugin.ArePrerequisitesMet())
if (!Plugin.Info.ArePrerequisitesMet())
{
CancelEnable();
return;
@@ -275,8 +281,8 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
private void CheckPrerequisites()
{
CanInstallPrerequisites = Plugin.Prerequisites.Any();
CanRemovePrerequisites = Plugin.Prerequisites.Any(p => p.UninstallActions.Any());
CanInstallPrerequisites = Plugin.Info.Prerequisites.Any();
CanRemovePrerequisites = Plugin.Info.Prerequisites.Any(p => p.UninstallActions.Any());
}
private async Task<object> ShowPrerequisitesDialog(bool uninstall)