From 8df5d5d6eb6185951fa1eddbf2a69c50384622a1 Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Mon, 30 Oct 2023 19:42:36 +0800 Subject: [PATCH 1/3] fix #1052 & user account add crash --- src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs | 4 +++- src/Snap.Hutao/Snap.Hutao/View/UserView.xaml | 1 - src/Snap.Hutao/Snap.Hutao/ViewModel/User/UserViewModel.cs | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs index ec6fea39..25ff0bcd 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs @@ -4,6 +4,7 @@ using Snap.Hutao.Core; using Snap.Hutao.Core.ExceptionService; using Snap.Hutao.Core.IO.Ini; +using Snap.Hutao.Factory.Abstraction; using Snap.Hutao.Model.Entity; using Snap.Hutao.Service.Game.Locator; using Snap.Hutao.Service.Game.Package; @@ -25,6 +26,7 @@ namespace Snap.Hutao.Service.Game; [Injection(InjectAs.Singleton, typeof(IGameService))] internal sealed partial class GameService : IGameService { + private readonly IContentDialogFactory contentDialogFactory; private readonly PackageConverter packageConverter; private readonly IServiceProvider serviceProvider; private readonly IGameDbService gameDbService; @@ -300,7 +302,7 @@ internal sealed partial class GameService : IGameService { // ContentDialog must be created by main thread. await taskContext.SwitchToMainThreadAsync(); - LaunchGameAccountNameDialog dialog = serviceProvider.CreateInstance(); + LaunchGameAccountNameDialog dialog = await contentDialogFactory.CreateInstanceAsync().ConfigureAwait(false); (bool isOk, string name) = await dialog.GetInputNameAsync().ConfigureAwait(false); if (isOk) diff --git a/src/Snap.Hutao/Snap.Hutao/View/UserView.xaml b/src/Snap.Hutao/Snap.Hutao/View/UserView.xaml index d84bbad5..0dcba325 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/UserView.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/UserView.xaml @@ -280,7 +280,6 @@ Text="{shcm:ResourceString Name=ViewUserUser}"/> (); + UserDialog dialog = await contentDialogFactory.CreateInstanceAsync().ConfigureAwait(false); ValueResult result = await dialog.GetInputCookieAsync().ConfigureAwait(false); // User confirms the input From 29c954b03251bd46e02f8b192d05dc75d1943837 Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Mon, 30 Oct 2023 22:03:33 +0800 Subject: [PATCH 2/3] fingerprint --- src/Snap.Hutao/Snap.Hutao/Web/ApiEndpoints.cs | 18 ++++++++++- .../PublicData/DeviceFp/DeviceFpClient.cs | 12 +++++++ .../PublicData/DeviceFp/DeviceFpData.cs | 31 +++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PublicData/DeviceFp/DeviceFpClient.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PublicData/DeviceFp/DeviceFpData.cs diff --git a/src/Snap.Hutao/Snap.Hutao/Web/ApiEndpoints.cs b/src/Snap.Hutao/Snap.Hutao/Web/ApiEndpoints.cs index 2b40fd6a..4247f148 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/ApiEndpoints.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/ApiEndpoints.cs @@ -168,7 +168,7 @@ internal static class ApiEndpoints } #endregion - #region + #region ApiTakumiEventBbsSignReward /// /// 签到活动Id @@ -367,6 +367,19 @@ internal static class ApiEndpoints public const string AccountCreateActionTicket = $"{PassportApi}/account/ma-cn-verifier/app/createActionTicketByToken"; #endregion + #region PublicDataApi + + /// + /// 获取 fingerprint + /// + public const string DeviceFpGetFp = $"{PublicDataApiDeviceFpApi}/getFp"; + + public static string DeviceFpGetExtList(int platform) + { + return $"{PublicDataApiDeviceFpApi}/getExtList?platform={platform:D}"; + } + #endregion + #region SdkStaticLauncherApi /// @@ -418,6 +431,9 @@ internal static class ApiEndpoints private const string PassportApiAuthApi = $"{PassportApi}/account/auth/api"; private const string PassportApiV4 = "https://passport-api-v4.mihoyo.com"; + private const string PublicDataApi = "https://public-data-api.mihoyo.com"; + private const string PublicDataApiDeviceFpApi = $"{PublicDataApi}/device-fp/api"; + private const string SdkStatic = "https://sdk-static.mihoyo.com"; private const string SdkStaticLauncherApi = $"{SdkStatic}/hk4e_cn/mdk/launcher/api"; diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PublicData/DeviceFp/DeviceFpClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PublicData/DeviceFp/DeviceFpClient.cs new file mode 100644 index 00000000..d0d397c3 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PublicData/DeviceFp/DeviceFpClient.cs @@ -0,0 +1,12 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient; + +namespace Snap.Hutao.Web.Hoyolab.PublicData.DeviceFp; + +[HttpClient(HttpClientConfiguration.Default)] +internal sealed partial class DeviceFpClient +{ + +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PublicData/DeviceFp/DeviceFpData.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PublicData/DeviceFp/DeviceFpData.cs new file mode 100644 index 00000000..7f744fb4 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PublicData/DeviceFp/DeviceFpData.cs @@ -0,0 +1,31 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hoyolab.PublicData.DeviceFp; + +internal sealed class DeviceFpData +{ + [JsonPropertyName("device_id")] + public string DeviceId { get; set; } = default!; + + [JsonPropertyName("bbs_device_id")] + public string? BbsDeviceId { get; set; } + + [JsonPropertyName("seed_id")] + public string SeedId { get; set; } = default!; + + [JsonPropertyName("seed_time")] + public string SeedTime { get; set; } = default!; + + [JsonPropertyName("platform")] + public string Platform { get; set; } = default!; + + [JsonPropertyName("device_fp")] + public string DeviceFp { get; set; } = default!; + + [JsonPropertyName("app_name")] + public string AppName { get; set; } = default!; + + [JsonPropertyName("ext_fields")] + public Dictionary ExtFields { get; set; } = default!; +} \ No newline at end of file From b5c16e2dae8840da54671a5049b43b8b4da3e6e8 Mon Sep 17 00:00:00 2001 From: Masterain Date: Mon, 30 Oct 2023 20:10:06 -0700 Subject: [PATCH 3/3] New Crowdin updates (#1053) --- .../Resource/Localization/SH.en.resx | 42 +++++++++---------- .../Resource/Localization/SH.ja.resx | 42 +++++++++---------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.en.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.en.resx index 271f4b03..4eef0a9d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.en.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.en.resx @@ -540,7 +540,7 @@ Verification failed - 验证码已发送至邮箱 + The verification code has been sent to your e-mail. Validation request is too frequent. Please try again in 1 minute. @@ -1167,16 +1167,16 @@ Configure Geetest CAPTCHA Verficaition API - 登录胡桃通行证 + Login to Snap Hutao Passport - 注册胡桃通行证 + Signup Snap Hutao Passport - 重置胡桃通行证密码 + Reset Password of Snap Hutao Passport - 注销胡桃通行证账号 + Delete Snap Hutao Passport Export App @@ -1941,7 +1941,7 @@ Reset Password - 注销账号的数据将永远丢失,无法恢复 + Delete Snap Hutao Passport will cause your data to lose without any recovery option Enter your email @@ -2226,49 +2226,49 @@ Home - 三思而后行 + Proceed with caution - 危险操作 + Danger Zone - 胡桃云服务到期时间 + Snap Hutao Cloud Expiring in - 胡桃通行证账号 + Snap Hutao Passport - 您可以无限制使用任何基于胡桃云服务的功能 + You are unlimited in any Snap Hutao Cloud features - 已认证的合作开发者 + Certificated Developer - 登录 + Sign in - 退出登录 + Sign out - 您可以无限制的使用任何测试功能 + You are unlimited in any testing feature - 胡桃开发/运维 + Snap Hutao developer and maintainer - 我们有时会向某些用户赠送胡桃云兑换码 + We sometimes give away Snap Hutao Cloud redemption codes to some users - 使用兑换码 + Use Redemption Code - 注册 + Register - 修改密码 + Change Password - 注销账号 + Delete Account After a full reading of the Genshin Impact and Snap Hutao user agreements, I choose to enable「Game Launcher - Advanced Features」. diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ja.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ja.resx index 9e93df7c..af2b3f46 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ja.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ja.resx @@ -540,7 +540,7 @@ 認証に失敗しました。 - 验证码已发送至邮箱 + 入力されたメールアドレスへ確認コードが送信されました 認証リクエストが多すぎます。一分後にやり直してください。 @@ -1167,16 +1167,16 @@ Geetest/CAPTCHA 認証APIの設定 - 登录胡桃通行证 + 胡桃パスポートへログイン - 注册胡桃通行证 + 胡桃パスポートの登録 - 重置胡桃通行证密码 + 胡桃パスポートのパスワードをリセット - 注销胡桃通行证账号 + 胡桃パスポート アカウントの削除 Appをエクスポート @@ -1941,7 +1941,7 @@ パスワードを忘れました - 注销账号的数据将永远丢失,无法恢复 + 削除されたアカウントのデータは永久的に削除され、復元することは出来ません。 メールアドレスを入力してください。 @@ -2226,49 +2226,49 @@ ホーム - 三思而后行 + 考え直して!! - 危险操作 + 危険な操作 - 胡桃云服务到期时间 + 胡桃クラウドサービスの有効期限 - 胡桃通行证账号 + 胡桃アカウント - 您可以无限制使用任何基于胡桃云服务的功能 + 胡桃クラウドのサービスをベースにした様々な機能が制限なく利用できます - 已认证的合作开发者 + 認定済みの共同開発者 - 登录 + ログイン - 退出登录 + ログアウト - 您可以无限制的使用任何测试功能 + テスト段階のあらゆる機能を使用できます。 - 胡桃开发/运维 + 胡桃の運用と開発または保守 - 我们有时会向某些用户赠送胡桃云兑换码 + 胡桃クラウドの引き替えコードを一部のユーザーに配布する事があります。 - 使用兑换码 + 引き替えコードの使用 - 注册 + 登録 - 修改密码 + パスワードの変更 - 注销账号 + アカウントの削除 原神およびSnap Hutaoの利用規約を全て熟読し、その後に『ゲームランチャー - 上級者向け設定』を有効にします。