From 4582a8906542010830e8e13392ee7a2545deda5e Mon Sep 17 00:00:00 2001 From: Dawnflare <129705403+Dawnflare@users.noreply.github.com> Date: Sat, 25 Jul 2026 22:21:42 -0700 Subject: [PATCH] fix(jast): handle updated product response --- .../Services/JastUsaAccountClient.cs | 26 +++++++++++-------- .../Infrastructure/DTOs/GetGamesResponse.cs | 6 ++--- .../External/JastUsaApiClient.cs | 10 +++---- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Application/Services/JastUsaAccountClient.cs b/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Application/Services/JastUsaAccountClient.cs index 252611637..d673e09fe 100644 --- a/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Application/Services/JastUsaAccountClient.cs +++ b/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Application/Services/JastUsaAccountClient.cs @@ -96,16 +96,20 @@ public async Task> GetGamesAsync(CancellationToken cancellati var products = await _apiClient.GetProductsAsync(token, cancellationToken); var gamesData = products.Select(product => - new JastGameData( - product.ProductName, - product.ProductCode, - product.GameId, - product.Game.ApiRoute, - product.Game.Translations.EnUs?.Id, - product.Game.Translations.Ja?.Id, - product.Game.Translations.ZhHans?.Id, - product.Game.Translations.ZhHant?.Id - )).ToList(); + { + var variant = product.Variant; + var game = product.Game ?? variant.Game; + return new JastGameData( + variant.ProductName, + variant.ProductCode, + variant.GameId, + game.ApiRoute, + game.Translations.EnUs?.Id, + game.Translations.Ja?.Id, + game.Translations.ZhHans?.Id, + game.Translations.ZhHant?.Id + ); + }).ToList(); return gamesData; } @@ -183,4 +187,4 @@ public async Task GetAssetDownloadLinkAsync( cancellationToken); } } -} \ No newline at end of file +} diff --git a/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/DTOs/GetGamesResponse.cs b/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/DTOs/GetGamesResponse.cs index 09779f2a3..896fd890b 100644 --- a/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/DTOs/GetGamesResponse.cs +++ b/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/DTOs/GetGamesResponse.cs @@ -38,8 +38,8 @@ public class Product [JsonProperty("@type")] public ProductType Type { get; set; } - [JsonProperty("variants")] - public Variant[] Variants { get; set; } + [JsonProperty("game")] + public Game Game { get; set; } [JsonProperty("variant")] public Variant Variant { get; set; } @@ -405,4 +405,4 @@ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSeria public static readonly EnUsEnumConverter Singleton = new EnUsEnumConverter(); } -} \ No newline at end of file +} diff --git a/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/External/JastUsaApiClient.cs b/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/External/JastUsaApiClient.cs index c691d23e0..3533a4b98 100644 --- a/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/External/JastUsaApiClient.cs +++ b/source/Library/JastUsaLibrary/Services/JastUsaIntegration/Infrastructure/External/JastUsaApiClient.cs @@ -113,7 +113,7 @@ public async Task GetGameTranslationsAsync(Authenticat return Serialization.FromJson(result.Content); } - public async Task> GetProductsAsync(AuthenticationToken token, CancellationToken cancellationToken = default) + public async Task> GetProductsAsync(AuthenticationToken token, CancellationToken cancellationToken = default) { if (token is null || token.Token.IsNullOrWhiteSpace()) { @@ -126,7 +126,7 @@ public async Task> GetProductsAsync(AuthenticationToken token, Can ["Accept-Encoding"] = "utf-8" }; - var products = new List(); + var products = new List(); var page = 1; while (true) { @@ -157,9 +157,9 @@ public async Task> GetProductsAsync(AuthenticationToken token, Can } var response = Serialization.FromJson(result.Content); - var variants = response.Products?.Select(x => x.Variant).ToList(); - products.AddRange(variants); - if (!variants.Any() || page == response.Pages) + var pageProducts = response.Products ?? new Product[0]; + products.AddRange(pageProducts); + if (!pageProducts.Any() || page == response.Pages) { break; }