From 3ac9536e768ee0ed1a2449e484fe99e2eab19a20 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Sun, 21 Jul 2024 15:52:57 +0200 Subject: [PATCH] App: Small changes in auto updater --- Elwig/App.xaml.cs | 13 +++++++++---- Elwig/Helpers/Utils.cs | 7 +++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Elwig/App.xaml.cs b/Elwig/App.xaml.cs index 012f617..04b6d51 100644 --- a/Elwig/App.xaml.cs +++ b/Elwig/App.xaml.cs @@ -227,7 +227,7 @@ namespace Elwig { } } - public static async Task CheckForUpdates(bool showSuccess = false) { + public static async Task CheckForUpdates(bool showAlert = false) { if (Config.UpdateUrl == null) return; var latest = await Utils.GetLatestInstallerUrl(Config.UpdateUrl); if (latest != null && new Version(latest.Value.Version) > new Version(Version)) { @@ -238,9 +238,14 @@ namespace Elwig { Current.Shutdown(); } }); - } else if (showSuccess) { - MessageBox.Show("Elwig ist auf dem aktuellsten Stand!", "Nach Updates suchen", - MessageBoxButton.OK, MessageBoxImage.Information); + } else if (showAlert) { + if (latest == null) { + MessageBox.Show("Informationen konnten nicht abgerufen werden!", "Nach Updates suchen", + MessageBoxButton.OK, MessageBoxImage.Error); + } else { + MessageBox.Show($"Elwig ist auf dem aktuellsten Stand! (Version: {latest.Value.Version})", "Nach Updates suchen", + MessageBoxButton.OK, MessageBoxImage.Information); + } } } diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index df69a17..f9be152 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -425,8 +425,11 @@ namespace Elwig.Helpers { public static async Task<(string Version, string Url, long Size)?> GetLatestInstallerUrl(string url) { try { using var client = GetHttpClient(accept: "application/json"); - var resJson = JsonNode.Parse(await client.GetStringAsync(url)); - var data = resJson!["data"]![0]!; + using var res = await client.GetAsync(url); + if (!res.IsSuccessStatusCode) + return null; + var resJson = JsonNode.Parse(await res.Content.ReadAsStringAsync()); + var data = resJson!["data"]!.AsArray()[^1]!; return ((string)data["version"]!, (string)data["url"]!, (long)data["size"]!); } catch { return null;