Fix dev build update check

This commit is contained in:
Jaex 2023-03-12 10:08:26 +03:00
parent 231febfe39
commit 2da874509a
5 changed files with 32 additions and 26 deletions

View file

@ -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<GitHubRelease> GetReleases()
return releases;
}
protected GitHubRelease GetLatestRelease()
{
GitHubRelease latestRelease = null;
string response = URLHelpers.DownloadString(LatestReleaseURL);
if (!string.IsNullOrEmpty(response))
{
latestRelease = JsonConvert.DeserializeObject<GitHubRelease>(response);
}
return latestRelease;
}
protected GitHubRelease GetLatestRelease(bool includePreRelease)
{
GitHubRelease latestRelease = null;
List<GitHubRelease> releases = GetReleases();
if (releases != null && releases.Count > 0)
if (includePreRelease)
{
if (includePreRelease)
List<GitHubRelease> releases = GetReleases();
if (releases != null && releases.Count > 0)
{
latestRelease = releases[0];
}
else
{
latestRelease = releases.FirstOrDefault(x => !x.prerelease);
}
}
else
{
latestRelease = GetLatestRelease();
}
return latestRelease;

View file

@ -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
};

View file

@ -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();
}

View file

@ -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();

View file

@ -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)