Skip to content

Commit 8823e7a

Browse files
committed
boost(Update): Improve the way SoundSwitch check for new updates.
1 parent 0c427fc commit 8823e7a

File tree

2 files changed

+16
-33
lines changed

2 files changed

+16
-33
lines changed

SoundSwitch/Framework/Updater/GitHubRelease.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,18 @@
1616

1717
namespace SoundSwitch.Framework.Updater
1818
{
19-
public class GitHubRelease
19+
public record GitHubRelease
2020
{
21-
public string tag_name { get; set; }
22-
public string body { get; set; }
23-
public string name { get; set; }
24-
public bool prerelease { get; set; }
25-
public List<Asset> assets { get; set; }
21+
public string tag_name { get; init; }
22+
public string body { get; init; }
23+
public string name { get; init; }
24+
public bool prerelease { get; init; }
25+
public List<Asset> assets { get; init; }
2626

2727
public class Asset
2828
{
29-
public string name { get; set; }
30-
public string browser_download_url { get; set; }
29+
public string name { get; init; }
30+
public string browser_download_url { get;init; }
3131
}
3232

3333
public override string ToString()

SoundSwitch/Framework/Updater/UpdateChecker.cs

+8-25
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@
1313
********************************************************************/
1414

1515
using System;
16-
using System.Collections.Generic;
1716
using System.Linq;
18-
using System.Net;
17+
using System.Net.Http;
18+
using System.Net.Http.Json;
1919
using System.Text.RegularExpressions;
20-
using System.Threading.Tasks;
2120
using System.Windows.Forms;
22-
using Newtonsoft.Json;
21+
using Sentry;
2322
using Serilog;
2423

2524
namespace SoundSwitch.Framework.Updater
@@ -32,7 +31,6 @@ public class UpdateChecker
3231
private static readonly Version AppVersion = new Version(Application.ProductVersion);
3332

3433
private readonly Uri _releaseUrl;
35-
private readonly WebClient _webClient = new WebClient();
3634
public EventHandler<NewReleaseEvent> UpdateAvailable;
3735
public bool Beta { get; set; }
3836

@@ -43,25 +41,9 @@ public UpdateChecker(Uri releaseUrl) : this(releaseUrl, false)
4341
public UpdateChecker(Uri releaseUrl, bool checkBeta)
4442
{
4543
_releaseUrl = releaseUrl;
46-
_webClient.DownloadStringCompleted += DownloadStringCompleted;
4744
Beta = checkBeta;
4845
}
4946

50-
private void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
51-
{
52-
if (e.Error != null)
53-
{
54-
Log.Error(e.Error, "Exception while getting release");
55-
return;
56-
}
57-
58-
var serverRelease = JsonConvert.DeserializeObject<List<GitHubRelease>>(e.Result);
59-
if (!serverRelease.Any(ProcessRelease))
60-
{
61-
Log.Information("No new Version found: {Releases}", serverRelease);
62-
}
63-
}
64-
6547
private bool ProcessRelease(GitHubRelease serverRelease)
6648
{
6749

@@ -73,7 +55,6 @@ private bool ProcessRelease(GitHubRelease serverRelease)
7355
}
7456

7557
var version = new Version(serverRelease.tag_name.Substring(1));
76-
var changelog = Regex.Split(serverRelease.body, "\r\n|\r|\n");
7758
try
7859
{
7960
if (version > AppVersion)
@@ -83,6 +64,7 @@ private bool ProcessRelease(GitHubRelease serverRelease)
8364
{
8465
return false;
8566
}
67+
var changelog = Regex.Split(serverRelease.body, "\r\n|\r|\n");
8668
var release = new Release(version, installer, serverRelease.name);
8769
release.Changelog.AddRange(changelog);
8870
UpdateAvailable?.Invoke(this, new NewReleaseEvent(release));
@@ -102,13 +84,14 @@ private bool ProcessRelease(GitHubRelease serverRelease)
10284
/// </summary>
10385
public void CheckForUpdate()
10486
{
105-
_webClient.Headers.Add("User-Agent", UserAgent);
106-
Task.Factory.StartNew(() => _webClient.DownloadStringAsync(_releaseUrl));
87+
using var httpClient = new HttpClient(new SentryHttpMessageHandler());
88+
var releases = httpClient.GetFromJsonAsync<GitHubRelease[]>(_releaseUrl).GetAwaiter().GetResult();
89+
foreach (var _ in (releases ?? Array.Empty<GitHubRelease>()).SkipWhile(release => !ProcessRelease(release))) ;
10790
}
10891

10992
public class NewReleaseEvent : EventArgs
11093
{
111-
public Release Release { get; private set; }
94+
public Release Release { get;}
11295

11396
public NewReleaseEvent(Release release)
11497
{

0 commit comments

Comments
 (0)