using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; using System.Reflection; using System.Text; using System.Text.Json; using System.Threading.Tasks; using System.Windows.Threading; using TeamsNetphoneLink.WPF; namespace TeamsNetphoneLink { public class UpdateCheck { public static bool UpdateAvailable; public static async Task GetLatestReleaseTagAsync() { using (var client = new HttpClient()) { var url = "https://git.jan.sx/api/v1/repos/krjan02/TeamsNetphoneLink/releases/latest"; try { var response = await client.GetStringAsync(url); var json = JsonDocument.Parse(response); if (json.RootElement.TryGetProperty("tag_name", out var tagName)) { return tagName.GetString(); } else { ExceptionWindowHelper.Show("UpdateCheck", MethodBase.GetCurrentMethod().Name, "Update Check nicht erfolgreich", "tag_name is not existing"); return ""; } } catch (Exception ex) { ExceptionWindowHelper.Show("UpdateCheck", MethodBase.GetCurrentMethod().Name, "Update Check nicht erfolgreich", ex.Message, ex.StackTrace); return ""; } } } public static bool IsVersionLower(string currentVersion, string releaseVersion) { if(releaseVersion.Length == 0) { return false; } Version current = Version.Parse(currentVersion); Version release = Version.Parse(releaseVersion); return current.CompareTo(release) < 0; } public static string GetCurrentVersion() { var assembly = Assembly.GetEntryAssembly(); var versionAttribute = assembly.GetCustomAttribute(); var productVersion = versionAttribute?.InformationalVersion; return productVersion.Split("+").FirstOrDefault(); ; } public static void UpgradeSettingsIfRequired() { var version = GetCurrentVersion(); if (Settings.Default.CurrentVersion != version) { Settings.Default.Upgrade(); Settings.Default.CurrentVersion = version; Settings.Default.Save(); } } } }