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 @@ You should have received a copy of the GNU General Public License
using Newtonsoft.Json; using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
namespace ShareX.HelpersLib namespace ShareX.HelpersLib
{ {
@ -40,6 +39,7 @@ public class GitHubUpdateChecker : UpdateChecker
private const string APIURL = "https://api.github.com"; private const string APIURL = "https://api.github.com";
private string ReleasesURL => $"{APIURL}/repos/{Owner}/{Repo}/releases"; private string ReleasesURL => $"{APIURL}/repos/{Owner}/{Repo}/releases";
private string LatestReleaseURL => $"{ReleasesURL}/latest";
public GitHubUpdateChecker(string owner, string repo) public GitHubUpdateChecker(string owner, string repo)
{ {
@ -105,22 +105,36 @@ protected List<GitHubRelease> GetReleases()
return releases; 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) protected GitHubRelease GetLatestRelease(bool includePreRelease)
{ {
GitHubRelease latestRelease = null; GitHubRelease latestRelease = null;
List<GitHubRelease> releases = GetReleases(); if (includePreRelease)
if (releases != null && releases.Count > 0)
{ {
if (includePreRelease) List<GitHubRelease> releases = GetReleases();
if (releases != null && releases.Count > 0)
{ {
latestRelease = releases[0]; latestRelease = releases[0];
} }
else }
{ else
latestRelease = releases.FirstOrDefault(x => !x.prerelease); {
} latestRelease = GetLatestRelease();
} }
return latestRelease; return latestRelease;

View file

@ -36,7 +36,6 @@ public class GitHubUpdateManager : IDisposable
public TimeSpan UpdateCheckInterval { get; private set; } = TimeSpan.FromHours(1); public TimeSpan UpdateCheckInterval { get; private set; } = TimeSpan.FromHours(1);
public string GitHubOwner { get; set; } public string GitHubOwner { get; set; }
public string GitHubRepo { 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 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; } public bool CheckPreReleaseUpdates { get; set; }
@ -44,15 +43,10 @@ public class GitHubUpdateManager : IDisposable
private Timer updateTimer = null; private Timer updateTimer = null;
private readonly object updateTimerLock = new object(); private readonly object updateTimerLock = new object();
public GitHubUpdateManager(string owner, string repo) public GitHubUpdateManager(string owner, string repo, bool portable = false)
{ {
GitHubOwner = owner; GitHubOwner = owner;
GitHubRepo = repo; GitHubRepo = repo;
}
public GitHubUpdateManager(string owner, string repo, bool dev, bool portable) : this(owner, repo)
{
IsDev = dev;
IsPortable = portable; IsPortable = portable;
} }
@ -94,7 +88,6 @@ public GitHubUpdateChecker CreateUpdateChecker()
{ {
return new GitHubUpdateChecker(GitHubOwner, GitHubRepo) return new GitHubUpdateChecker(GitHubOwner, GitHubRepo)
{ {
IsDev = IsDev,
IsPortable = IsPortable, IsPortable = IsPortable,
IncludePreRelease = CheckPreReleaseUpdates IncludePreRelease = CheckPreReleaseUpdates
}; };

View file

@ -38,7 +38,7 @@ public partial class UpdateMessageBox : Form
protected override bool ShowWithoutActivation => !ActivateWindow; protected override bool ShowWithoutActivation => !ActivateWindow;
public UpdateMessageBox(UpdateChecker updateChecker, bool activateWindow = true, bool devBuild = false) public UpdateMessageBox(UpdateChecker updateChecker, bool activateWindow = true)
{ {
ActivateWindow = activateWindow; ActivateWindow = activateWindow;
@ -68,20 +68,19 @@ public UpdateMessageBox(UpdateChecker updateChecker, bool activateWindow = true,
sbText.Append(Resources.UpdateMessageBox_UpdateMessageBox_CurrentVersion); sbText.Append(Resources.UpdateMessageBox_UpdateMessageBox_CurrentVersion);
sbText.Append(": "); sbText.Append(": ");
sbText.Append(updateChecker.CurrentVersion); sbText.Append(updateChecker.CurrentVersion);
if (updateChecker.IsDev) sbText.Append(" Dev");
sbText.AppendLine(); sbText.AppendLine();
sbText.Append(Resources.UpdateMessageBox_UpdateMessageBox_LatestVersion); sbText.Append(Resources.UpdateMessageBox_UpdateMessageBox_LatestVersion);
sbText.Append(": "); sbText.Append(": ");
sbText.Append(updateChecker.LatestVersion); 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)"); if (updateChecker is GitHubUpdateChecker githubUpdateChecker && githubUpdateChecker.IsPreRelease) sbText.Append(" (Pre-release)");
lblText.Text = sbText.ToString(); 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; DialogResult result = DialogResult.None;
@ -91,7 +90,7 @@ public static DialogResult Start(UpdateChecker updateChecker, bool activateWindo
try try
{ {
using (UpdateMessageBox messageBox = new UpdateMessageBox(updateChecker, activateWindow, devBuild)) using (UpdateMessageBox messageBox = new UpdateMessageBox(updateChecker, activateWindow))
{ {
result = messageBox.ShowDialog(); result = messageBox.ShowDialog();
} }

View file

@ -355,7 +355,7 @@ private static void Run()
SettingManager.LoadInitialSettings(); SettingManager.LoadInitialSettings();
Uploader.UpdateServicePointManager(); Uploader.UpdateServicePointManager();
UpdateManager = new GitHubUpdateManager("ShareX", "ShareX", Dev, Portable); UpdateManager = new GitHubUpdateManager("ShareX", "ShareX", Portable);
LanguageHelper.ChangeLanguage(Settings.Language); LanguageHelper.ChangeLanguage(Settings.Language);
CleanupManager.CleanupAsync(); CleanupManager.CleanupAsync();
Helpers.TryFixHandCursor(); Helpers.TryFixHandCursor();

View file

@ -1880,7 +1880,7 @@ public static async Task DownloadDevBuild()
await updateChecker.CheckUpdateAsync(); await updateChecker.CheckUpdateAsync();
UpdateMessageBox.Start(updateChecker, true, true); UpdateMessageBox.Start(updateChecker, true);
} }
public static async Task DownloadAppVeyorBuild() public static async Task DownloadAppVeyorBuild()
@ -1894,7 +1894,7 @@ public static async Task DownloadAppVeyorBuild()
await updateChecker.CheckUpdateAsync(); await updateChecker.CheckUpdateAsync();
UpdateMessageBox.Start(updateChecker, true, true); UpdateMessageBox.Start(updateChecker, true);
} }
public static Image CreateQRCode(string text, int width, int height) public static Image CreateQRCode(string text, int width, int height)