From 2da874509a18e8a46d5381cc2c8408f89844ddf4 Mon Sep 17 00:00:00 2001 From: Jaex Date: Sun, 12 Mar 2023 10:08:26 +0300 Subject: [PATCH] Fix dev build update check --- .../UpdateChecker/GitHubUpdateChecker.cs | 32 +++++++++++++------ .../UpdateChecker/GitHubUpdateManager.cs | 9 +----- .../UpdateChecker/UpdateMessageBox.cs | 11 +++---- ShareX/Program.cs | 2 +- ShareX/TaskHelpers.cs | 4 +-- 5 files changed, 32 insertions(+), 26 deletions(-) diff --git a/ShareX.HelpersLib/UpdateChecker/GitHubUpdateChecker.cs b/ShareX.HelpersLib/UpdateChecker/GitHubUpdateChecker.cs index 52628dffc..e5e0a5b54 100644 --- a/ShareX.HelpersLib/UpdateChecker/GitHubUpdateChecker.cs +++ b/ShareX.HelpersLib/UpdateChecker/GitHubUpdateChecker.cs @@ -26,7 +26,6 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; -using System.Linq; namespace ShareX.HelpersLib { @@ -40,6 +39,7 @@ public class GitHubUpdateChecker : UpdateChecker private const string APIURL = "https://api.github.com"; private string ReleasesURL => $"{APIURL}/repos/{Owner}/{Repo}/releases"; + private string LatestReleaseURL => $"{ReleasesURL}/latest"; public GitHubUpdateChecker(string owner, string repo) { @@ -105,22 +105,36 @@ protected List GetReleases() return releases; } + protected GitHubRelease GetLatestRelease() + { + GitHubRelease latestRelease = null; + + string response = URLHelpers.DownloadString(LatestReleaseURL); + + if (!string.IsNullOrEmpty(response)) + { + latestRelease = JsonConvert.DeserializeObject(response); + } + + return latestRelease; + } + protected GitHubRelease GetLatestRelease(bool includePreRelease) { GitHubRelease latestRelease = null; - List releases = GetReleases(); - - if (releases != null && releases.Count > 0) + if (includePreRelease) { - if (includePreRelease) + List releases = GetReleases(); + + if (releases != null && releases.Count > 0) { latestRelease = releases[0]; } - else - { - latestRelease = releases.FirstOrDefault(x => !x.prerelease); - } + } + else + { + latestRelease = GetLatestRelease(); } return latestRelease; diff --git a/ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs b/ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs index 8228607ae..d6e829112 100644 --- a/ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs +++ b/ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs @@ -36,7 +36,6 @@ public class GitHubUpdateManager : IDisposable public TimeSpan UpdateCheckInterval { get; private set; } = TimeSpan.FromHours(1); public string GitHubOwner { get; set; } public string GitHubRepo { get; set; } - public bool IsDev { get; set; } // If current build is dev and latest stable release is same version as current build then it will be downloaded public bool IsPortable { get; set; } // If current build is portable then download URL will be opened in browser instead of downloading it public bool CheckPreReleaseUpdates { get; set; } @@ -44,15 +43,10 @@ public class GitHubUpdateManager : IDisposable private Timer updateTimer = null; private readonly object updateTimerLock = new object(); - public GitHubUpdateManager(string owner, string repo) + public GitHubUpdateManager(string owner, string repo, bool portable = false) { GitHubOwner = owner; GitHubRepo = repo; - } - - public GitHubUpdateManager(string owner, string repo, bool dev, bool portable) : this(owner, repo) - { - IsDev = dev; IsPortable = portable; } @@ -94,7 +88,6 @@ public GitHubUpdateChecker CreateUpdateChecker() { return new GitHubUpdateChecker(GitHubOwner, GitHubRepo) { - IsDev = IsDev, IsPortable = IsPortable, IncludePreRelease = CheckPreReleaseUpdates }; diff --git a/ShareX.HelpersLib/UpdateChecker/UpdateMessageBox.cs b/ShareX.HelpersLib/UpdateChecker/UpdateMessageBox.cs index 60e009f72..6985653d8 100644 --- a/ShareX.HelpersLib/UpdateChecker/UpdateMessageBox.cs +++ b/ShareX.HelpersLib/UpdateChecker/UpdateMessageBox.cs @@ -38,7 +38,7 @@ public partial class UpdateMessageBox : Form protected override bool ShowWithoutActivation => !ActivateWindow; - public UpdateMessageBox(UpdateChecker updateChecker, bool activateWindow = true, bool devBuild = false) + public UpdateMessageBox(UpdateChecker updateChecker, bool activateWindow = true) { ActivateWindow = activateWindow; @@ -68,20 +68,19 @@ public UpdateMessageBox(UpdateChecker updateChecker, bool activateWindow = true, sbText.Append(Resources.UpdateMessageBox_UpdateMessageBox_CurrentVersion); sbText.Append(": "); sbText.Append(updateChecker.CurrentVersion); - if (updateChecker.IsDev) sbText.Append(" Dev"); sbText.AppendLine(); sbText.Append(Resources.UpdateMessageBox_UpdateMessageBox_LatestVersion); sbText.Append(": "); sbText.Append(updateChecker.LatestVersion); - if (devBuild) sbText.Append(" Dev"); + if (updateChecker.IsDev) sbText.Append(" Dev"); if (updateChecker is GitHubUpdateChecker githubUpdateChecker && githubUpdateChecker.IsPreRelease) sbText.Append(" (Pre-release)"); lblText.Text = sbText.ToString(); - lblViewChangelog.Visible = !devBuild; + lblViewChangelog.Visible = !updateChecker.IsDev; } - public static DialogResult Start(UpdateChecker updateChecker, bool activateWindow = true, bool devBuild = false) + public static DialogResult Start(UpdateChecker updateChecker, bool activateWindow = true) { DialogResult result = DialogResult.None; @@ -91,7 +90,7 @@ public static DialogResult Start(UpdateChecker updateChecker, bool activateWindo try { - using (UpdateMessageBox messageBox = new UpdateMessageBox(updateChecker, activateWindow, devBuild)) + using (UpdateMessageBox messageBox = new UpdateMessageBox(updateChecker, activateWindow)) { result = messageBox.ShowDialog(); } diff --git a/ShareX/Program.cs b/ShareX/Program.cs index bb5105e10..483578c21 100644 --- a/ShareX/Program.cs +++ b/ShareX/Program.cs @@ -355,7 +355,7 @@ private static void Run() SettingManager.LoadInitialSettings(); Uploader.UpdateServicePointManager(); - UpdateManager = new GitHubUpdateManager("ShareX", "ShareX", Dev, Portable); + UpdateManager = new GitHubUpdateManager("ShareX", "ShareX", Portable); LanguageHelper.ChangeLanguage(Settings.Language); CleanupManager.CleanupAsync(); Helpers.TryFixHandCursor(); diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index 215f49e7a..39245f7a1 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -1880,7 +1880,7 @@ public static async Task DownloadDevBuild() await updateChecker.CheckUpdateAsync(); - UpdateMessageBox.Start(updateChecker, true, true); + UpdateMessageBox.Start(updateChecker, true); } public static async Task DownloadAppVeyorBuild() @@ -1894,7 +1894,7 @@ public static async Task DownloadAppVeyorBuild() await updateChecker.CheckUpdateAsync(); - UpdateMessageBox.Start(updateChecker, true, true); + UpdateMessageBox.Start(updateChecker, true); } public static Image CreateQRCode(string text, int width, int height)