move actions to separated code & add sinlge update search action

This commit is contained in:
2024-10-03 09:54:22 +02:00
parent 934b8db71b
commit 95a81a9306
8 changed files with 164 additions and 112 deletions

View File

@@ -1,7 +1,6 @@
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
using ModpackUpdater.Apps.Manager.LangRes;
using ModpackUpdater.Apps.Manager.Ui;
using ModpackUpdater.Manager;
using Pilz.Plugins.Advanced;
using Telerik.WinControls.UI;
@@ -20,52 +19,10 @@ internal class CheckAllActionsHealthyFeature : PluginFunction, IPluginFeaturePro
{
if (@params is not MainApiParameters p
|| p.Api.MainWindow is not MainForm mainForm
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView
|| mainForm.Controls.Find("radWaitingBar_Actions", true).FirstOrDefault() is not RadWaitingBar rwb)
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView)
return null;
rwb.StartWaiting();
rwb.ShowText = true;
var rowsCount = gridView.Rows.Count;
rwb.Text = "0 / " + rowsCount;
gridView.BeginUpdate();
var rows = new Dictionary<GridViewRowInfo, InstallAction>();
for (var i = 0; i < gridView.Rows.Count; i++)
{
var row = gridView.Rows[i];
var failed = false;
if (row.Tag is InstallAction action)
{
Task.Run(async () =>
{
try
{
var factory = new ModpackFactory();
var result = await factory.ResolveSourceUrl(action);
failed = string.IsNullOrWhiteSpace(result);
}
catch (Exception)
{
}
}).Wait();
}
foreach (var c in row.Cells)
{
c.Style.CustomizeFill = true;
c.Style.BackColor = failed ? Color.IndianRed : Color.ForestGreen;
}
rwb.Text = $"{i} / {rowsCount}";
Application.DoEvents();
}
gridView.EndUpdate();
rwb.ShowText = false;
rwb.StopWaiting();
SharedFunctions.CheckActionHealthy(p.Api, [.. gridView.Rows]);
return null;
}