complete
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System.Text;
|
||||
using Avalonia.Media;
|
||||
using ModpackUpdater.Apps.Manager.Api.Model;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
@@ -14,16 +15,26 @@ namespace ModpackUpdater.Apps.Manager.Features;
|
||||
|
||||
internal static class SharedFunctions
|
||||
{
|
||||
public static async Task<bool> CheckActionHealthy(IMainApi api, params MainWindowGridRow[] rows)
|
||||
private static readonly IImage? imageSourceSuccess = AppGlobals.Symbols.GetImageSource(AppSymbols.done);
|
||||
private static readonly IImage? imageSourceWorking = AppGlobals.Symbols.GetImageSource(AppSymbols.hourglass);
|
||||
private static readonly IImage? imageSourceFailed = AppGlobals.Symbols.GetImageSource(AppSymbols.close);
|
||||
|
||||
public static async Task CheckActionHealthy(IMainApi api, params MainWindowGridRow[] rows)
|
||||
{
|
||||
var rowsCount = rows.Length;
|
||||
var failed = false;
|
||||
var msg = default(string);
|
||||
var factory = new ModpackFactory();
|
||||
|
||||
api.Model.Progress.Value = 0;
|
||||
api.Model.Progress.MaxValue = rowsCount;
|
||||
api.Model.Progress.Visible = true;
|
||||
|
||||
for (var i = 0; i < rows.Length; i++)
|
||||
for (var i = 0; i < rowsCount; i++)
|
||||
{
|
||||
var row = rows[i];
|
||||
if (row.SourceType == SourceType.DirectLink)
|
||||
continue;
|
||||
row.StateImage = imageSourceWorking;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -32,18 +43,17 @@ internal static class SharedFunctions
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
msg = ex.Message;
|
||||
// Ignore
|
||||
}
|
||||
|
||||
if (api.HasClosed)
|
||||
return;
|
||||
|
||||
row.IsValid = !failed;
|
||||
|
||||
// rwb.Text = $"{i} / {rowsCount}";
|
||||
row.StateImage = failed ? imageSourceFailed : imageSourceSuccess;
|
||||
api.Model.Progress.Value = i;
|
||||
}
|
||||
|
||||
if (rowsCount == 1 && failed && !string.IsNullOrWhiteSpace(msg))
|
||||
_ = MessageBoxManager.GetMessageBoxStandard(string.Empty, msg).ShowAsPopupAsync(api.MainWindow);
|
||||
|
||||
return true;
|
||||
api.Model.Progress.Visible = false;
|
||||
}
|
||||
|
||||
public static async Task<bool> CollectUpdates(IMainApi api, params InstallAction[] actions)
|
||||
@@ -53,7 +63,7 @@ internal static class SharedFunctions
|
||||
|
||||
// Collect updates
|
||||
var result = await AvaloniaFlyoutBase.Show(new UpdatesCollectorView(api.Model.CurrentWorkspace, actions), api.MainWindow);
|
||||
if (result.Result is not ModUpdates resultUpdates)
|
||||
if (api.HasClosed || result.Result is not ModUpdates resultUpdates)
|
||||
return false;
|
||||
|
||||
// Collect versions with changes
|
||||
@@ -86,33 +96,55 @@ internal static class SharedFunctions
|
||||
return true;
|
||||
}
|
||||
|
||||
public static async Task FindNewDirectLinks(params MainWindowGridRow[] rows)
|
||||
public static async Task FindNewDirectLinks(IMainApi api, params MainWindowGridRow[] rows)
|
||||
{
|
||||
var factory = new ModpackFactory();
|
||||
|
||||
foreach (var row in rows)
|
||||
|
||||
api.Model.Progress.Value = 0;
|
||||
api.Model.Progress.MaxValue = rows.Length;
|
||||
api.Model.Progress.Visible = true;
|
||||
|
||||
for (var i = 0; i < rows.Length; i++)
|
||||
{
|
||||
var row = rows[i];
|
||||
if (row.SourceType == SourceType.DirectLink)
|
||||
continue;
|
||||
|
||||
row.StateImage = imageSourceWorking;
|
||||
|
||||
try
|
||||
{
|
||||
row.SourceUrl = await factory.ResolveSourceUrl(row.Action);
|
||||
row.StateImage = imageSourceSuccess;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// Fail silently
|
||||
row.StateImage = imageSourceFailed;
|
||||
}
|
||||
|
||||
if (api.HasClosed)
|
||||
return;
|
||||
api.Model.Progress.Value = i;
|
||||
}
|
||||
|
||||
api.Model.Progress.Visible = false;
|
||||
}
|
||||
|
||||
public static void ClearDirectLinks(params MainWindowGridRow[] rows)
|
||||
public static void ClearDirectLinks(IMainApi api, params MainWindowGridRow[] rows)
|
||||
{
|
||||
foreach (var row in rows)
|
||||
api.Model.Progress.Value = 0;
|
||||
api.Model.Progress.MaxValue = rows.Length;
|
||||
api.Model.Progress.Visible = true;
|
||||
|
||||
for (var i = 0; i < rows.Length; i++)
|
||||
{
|
||||
var row = rows[i];
|
||||
if (row.SourceType != SourceType.DirectLink)
|
||||
row.SourceUrl = null;
|
||||
row.StateImage = null;
|
||||
api.Model.Progress.Value = i;
|
||||
}
|
||||
|
||||
api.Model.Progress.Visible = false;
|
||||
}
|
||||
|
||||
public static string GenerateChangelog(InstallInfos installInfos, UpdateInfo updateInfos)
|
||||
|
||||
Reference in New Issue
Block a user