diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Resource/LatestPackageExtension.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Resource/LatestPackageExtension.cs new file mode 100644 index 00000000..b470b1b1 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/Resource/LatestPackageExtension.cs @@ -0,0 +1,21 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using System.Text; + +namespace Snap.Hutao.Web.Hoyolab.SdkStatic.Hk4e.Launcher.Resource; + +internal static class LatestPackageExtension +{ + public static void Patch(this LatestPackage latest) + { + StringBuilder pathBuilder = new(); + foreach (PackageSegment segment in latest.Segments) + { + pathBuilder.AppendLine(segment.Path); + } + + latest.Path = pathBuilder.ToStringTrimEndReturn(); + latest.Name = latest.Segments[0].Path[..^4]; // .00X + } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/ResourceClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/ResourceClient.cs index 94c7c03d..ca3cc16f 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/ResourceClient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/SdkStatic/Hk4e/Launcher/ResourceClient.cs @@ -46,18 +46,16 @@ internal sealed partial class ResourceClient .TryCatchSendAsync>(httpClient, logger, token) .ConfigureAwait(false); - // 补全缺失的信息 + // 最新版完整包 if (resp is { Data.Game.Latest: LatestPackage latest }) { - StringBuilder pathBuilder = new(); - foreach (PackageSegment segment in latest.Segments) - { - pathBuilder.AppendLine(segment.Path); - } + latest.Patch(); + } - latest.Path = pathBuilder.ToStringTrimEndReturn(); - string path = latest.Segments[0].Path[..^4]; // .00X - latest.Name = Path.GetFileName(path); + // 预下载完整包 + if (resp is { Data.PreDownloadGame.Latest: LatestPackage preDownloadLatest }) + { + preDownloadLatest.Patch(); } return Response.Response.DefaultIfNull(resp);