aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/Modules
diff options
context:
space:
mode:
authorAndrey Sukharev <SukharevAndrey@users.noreply.github.com>2023-03-22 01:41:19 +0300
committerGitHub <noreply@github.com>2023-03-21 19:41:19 -0300
commit4ce4299ca2a6b11332f2341c69f40efd7205282f (patch)
tree595805d7b0288157c9e4e6598ce89de39e16b76c /Ryujinx.Ava/Modules
parent17620d18db8d4a67e4b917596c760107d26fadc5 (diff)
Use source generated json serializers in order to improve code trimming (#4094)
* Use source generated json serializers in order to improve code trimming * Use strongly typed github releases model to fetch updates instead of raw Newtonsoft.Json parsing * Use separate model for LogEventArgs serialization * Make dynamic object formatter static. Fix string builder pooling. * Do not inherit json version of LogEventArgs from EventArgs * Fix extra space in object formatting * Write log json directly to stream instead of using buffer writer * Rebase fixes * Rebase fixes * Rebase fixes * Enforce block-scoped namespaces in the solution. Convert style for existing code * Apply suggestions from code review Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Rebase indent fix * Fix indent * Delete unnecessary json properties * Rebase fix * Remove overridden json property names as they are handled in the options * Apply suggestions from code review Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Use default json options in github api calls * Indentation and spacing fixes --------- Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Ava/Modules')
-rw-r--r--Ryujinx.Ava/Modules/Updater/Updater.cs22
1 files changed, 9 insertions, 13 deletions
diff --git a/Ryujinx.Ava/Modules/Updater/Updater.cs b/Ryujinx.Ava/Modules/Updater/Updater.cs
index e89abd1d..c5857528 100644
--- a/Ryujinx.Ava/Modules/Updater/Updater.cs
+++ b/Ryujinx.Ava/Modules/Updater/Updater.cs
@@ -4,13 +4,14 @@ using FluentAvalonia.UI.Controls;
using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.Tar;
using ICSharpCode.SharpZipLib.Zip;
-using Newtonsoft.Json.Linq;
using Ryujinx.Ava;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Common;
using Ryujinx.Common.Logging;
+using Ryujinx.Common.Utilities;
using Ryujinx.Ui.Common.Helper;
+using Ryujinx.Ui.Common.Models.Github;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -31,6 +32,7 @@ namespace Ryujinx.Modules
internal static class Updater
{
private const string GitHubApiURL = "https://api.github.com";
+ private static readonly GithubReleasesJsonSerializerContext SerializerContext = new(JsonHelper.GetDefaultSerializerOptions());
private static readonly string HomeDir = AppDomain.CurrentDomain.BaseDirectory;
private static readonly string UpdateDir = Path.Combine(Path.GetTempPath(), "Ryujinx", "update");
@@ -99,22 +101,16 @@ namespace Ryujinx.Modules
string buildInfoURL = $"{GitHubApiURL}/repos/{ReleaseInformation.ReleaseChannelOwner}/{ReleaseInformation.ReleaseChannelRepo}/releases/latest";
string fetchedJson = await jsonClient.GetStringAsync(buildInfoURL);
- JObject jsonRoot = JObject.Parse(fetchedJson);
- JToken assets = jsonRoot["assets"];
+ var fetched = JsonHelper.Deserialize(fetchedJson, SerializerContext.GithubReleasesJsonResponse);
+ _buildVer = fetched.Name;
- _buildVer = (string)jsonRoot["name"];
-
- foreach (JToken asset in assets)
+ foreach (var asset in fetched.Assets)
{
- string assetName = (string)asset["name"];
- string assetState = (string)asset["state"];
- string downloadURL = (string)asset["browser_download_url"];
-
- if (assetName.StartsWith("test-ava-ryujinx") && assetName.EndsWith(_platformExt))
+ if (asset.Name.StartsWith("test-ava-ryujinx") && asset.Name.EndsWith(_platformExt))
{
- _buildUrl = downloadURL;
+ _buildUrl = asset.BrowserDownloadUrl;
- if (assetState != "uploaded")
+ if (asset.State != "uploaded")
{
if (showVersionUpToDate)
{