Merge pull request #1056 from DGP-Studio/develop

This commit is contained in:
DismissedLight
2023-10-31 11:11:03 +08:00
committed by GitHub
8 changed files with 108 additions and 46 deletions

View File

@@ -540,7 +540,7 @@
<value>Verification failed</value>
</data>
<data name="ServerPassportVerifyRequestSuccess" xml:space="preserve">
<value>验证码已发送至邮箱</value>
<value>The verification code has been sent to your e-mail.</value>
</data>
<data name="ServerPassportVerifyTooFrequent" xml:space="preserve">
<value>Validation request is too frequent. Please try again in 1 minute.</value>
@@ -1167,16 +1167,16 @@
<value>Configure Geetest CAPTCHA Verficaition API</value>
</data>
<data name="ViewDialogHutaoPassportLoginTitle" xml:space="preserve">
<value>登录胡桃通行证</value>
<value>Login to Snap Hutao Passport</value>
</data>
<data name="ViewDialogHutaoPassportRegisterTitle" xml:space="preserve">
<value>注册胡桃通行证</value>
<value>Signup Snap Hutao Passport</value>
</data>
<data name="ViewDialogHutaoPassportResetPasswordTitle" xml:space="preserve">
<value>重置胡桃通行证密码</value>
<value>Reset Password of Snap Hutao Passport</value>
</data>
<data name="ViewDialogHutaoPassportUnregisterTitle" xml:space="preserve">
<value>注销胡桃通行证账号</value>
<value>Delete Snap Hutao Passport</value>
</data>
<data name="ViewDialogImportExportApp" xml:space="preserve">
<value>Export App</value>
@@ -1941,7 +1941,7 @@
<value>Reset Password</value>
</data>
<data name="ViewPageHutaoPassportResetPasswordHint" xml:space="preserve">
<value>注销账号的数据将永远丢失,无法恢复</value>
<value>Delete Snap Hutao Passport will cause your data to lose without any recovery option</value>
</data>
<data name="ViewPageHutaoPassportUserNameHint" xml:space="preserve">
<value>Enter your email</value>
@@ -2226,49 +2226,49 @@
<value>Home</value>
</data>
<data name="ViewPageSettingHutaoPassportDangerZoneDescription" xml:space="preserve">
<value>三思而后行</value>
<value>Proceed with caution</value>
</data>
<data name="ViewPageSettingHutaoPassportDangerZoneHeader" xml:space="preserve">
<value>危险操作</value>
<value>Danger Zone</value>
</data>
<data name="ViewPageSettingHutaoPassportGachaLogExpiredAtHeader" xml:space="preserve">
<value>胡桃云服务到期时间</value>
<value>Snap Hutao Cloud Expiring in</value>
</data>
<data name="ViewPageSettingHutaoPassportHeader" xml:space="preserve">
<value>胡桃通行证账号</value>
<value>Snap Hutao Passport</value>
</data>
<data name="ViewPageSettingHutaoPassportLicensedDeveloperDescription" xml:space="preserve">
<value>您可以无限制使用任何基于胡桃云服务的功能</value>
<value>You are unlimited in any Snap Hutao Cloud features</value>
</data>
<data name="ViewPageSettingHutaoPassportLicensedDeveloperHeader" xml:space="preserve">
<value>已认证的合作开发者</value>
<value>Certificated Developer</value>
</data>
<data name="ViewPageSettingHutaoPassportLoginAction" xml:space="preserve">
<value>登录</value>
<value>Sign in</value>
</data>
<data name="ViewPageSettingHutaoPassportLogoutAction" xml:space="preserve">
<value>退出登录</value>
<value>Sign out</value>
</data>
<data name="ViewPageSettingHutaoPassportMaintainerDescription" xml:space="preserve">
<value>您可以无限制的使用任何测试功能</value>
<value>You are unlimited in any testing feature</value>
</data>
<data name="ViewPageSettingHutaoPassportMaintainerHeader" xml:space="preserve">
<value>胡桃开发/运维</value>
<value>Snap Hutao developer and maintainer</value>
</data>
<data name="ViewPageSettingHutaoPassportRedeemCodeDescription" xml:space="preserve">
<value>我们有时会向某些用户赠送胡桃云兑换码</value>
<value>We sometimes give away Snap Hutao Cloud redemption codes to some users</value>
</data>
<data name="ViewPageSettingHutaoPassportRedeemCodeHeader" xml:space="preserve">
<value>使用兑换码</value>
<value>Use Redemption Code</value>
</data>
<data name="ViewPageSettingHutaoPassportRegisterAction" xml:space="preserve">
<value>注册</value>
<value>Register</value>
</data>
<data name="ViewPageSettingHutaoPassportResetPasswordAction" xml:space="preserve">
<value>修改密码</value>
<value>Change Password</value>
</data>
<data name="ViewPageSettingHutaoPassportUnregisterAction" xml:space="preserve">
<value>注销账号</value>
<value>Delete Account</value>
</data>
<data name="ViewPageSettingIsAdvancedLaunchOptionsEnabledDescription" xml:space="preserve">
<value>After a full reading of the Genshin Impact and Snap Hutao user agreements, I choose to enable「Game Launcher - Advanced Features」.</value>

View File

@@ -540,7 +540,7 @@
<value>認証に失敗しました。</value>
</data>
<data name="ServerPassportVerifyRequestSuccess" xml:space="preserve">
<value>验证码已发送至邮箱</value>
<value>入力されたメールアドレスへ確認コードが送信されました</value>
</data>
<data name="ServerPassportVerifyTooFrequent" xml:space="preserve">
<value>認証リクエストが多すぎます。一分後にやり直してください。</value>
@@ -1167,16 +1167,16 @@
<value>Geetest/CAPTCHA 認証APIの設定</value>
</data>
<data name="ViewDialogHutaoPassportLoginTitle" xml:space="preserve">
<value>登录胡桃通行证</value>
<value>胡桃パスポートへログイン</value>
</data>
<data name="ViewDialogHutaoPassportRegisterTitle" xml:space="preserve">
<value>注册胡桃通行证</value>
<value>胡桃パスポートの登録</value>
</data>
<data name="ViewDialogHutaoPassportResetPasswordTitle" xml:space="preserve">
<value>重置胡桃通行证密码</value>
<value>胡桃パスポートのパスワードをリセット</value>
</data>
<data name="ViewDialogHutaoPassportUnregisterTitle" xml:space="preserve">
<value>注销胡桃通行证账号</value>
<value>胡桃パスポート アカウントの削除</value>
</data>
<data name="ViewDialogImportExportApp" xml:space="preserve">
<value>Appをエクスポート</value>
@@ -1941,7 +1941,7 @@
<value>パスワードを忘れました</value>
</data>
<data name="ViewPageHutaoPassportResetPasswordHint" xml:space="preserve">
<value>注销账号的数据将永远丢失,无法恢复</value>
<value>削除されたアカウントのデータは永久的に削除され、復元することは出来ません。</value>
</data>
<data name="ViewPageHutaoPassportUserNameHint" xml:space="preserve">
<value>メールアドレスを入力してください。</value>
@@ -2226,49 +2226,49 @@
<value>ホーム</value>
</data>
<data name="ViewPageSettingHutaoPassportDangerZoneDescription" xml:space="preserve">
<value>三思而后行</value>
<value>考え直して!!</value>
</data>
<data name="ViewPageSettingHutaoPassportDangerZoneHeader" xml:space="preserve">
<value>危操作</value>
<value>危険な操作</value>
</data>
<data name="ViewPageSettingHutaoPassportGachaLogExpiredAtHeader" xml:space="preserve">
<value>胡桃云服务到期时间</value>
<value>胡桃クラウドサービスの有効期限</value>
</data>
<data name="ViewPageSettingHutaoPassportHeader" xml:space="preserve">
<value>胡桃通行证账号</value>
<value>胡桃アカウント</value>
</data>
<data name="ViewPageSettingHutaoPassportLicensedDeveloperDescription" xml:space="preserve">
<value>您可以无限制使用任何基于胡桃云服务的功能</value>
<value>胡桃クラウドのサービスをベースにした様々な機能が制限なく利用できます</value>
</data>
<data name="ViewPageSettingHutaoPassportLicensedDeveloperHeader" xml:space="preserve">
<value>已认证的合作开发者</value>
<value>認定済みの共同開発者</value>
</data>
<data name="ViewPageSettingHutaoPassportLoginAction" xml:space="preserve">
<value>登录</value>
<value>ログイン</value>
</data>
<data name="ViewPageSettingHutaoPassportLogoutAction" xml:space="preserve">
<value>退出登录</value>
<value>ログアウト</value>
</data>
<data name="ViewPageSettingHutaoPassportMaintainerDescription" xml:space="preserve">
<value>您可以无限制的使用任何测试功能</value>
<value>テスト段階のあらゆる機能を使用できます。</value>
</data>
<data name="ViewPageSettingHutaoPassportMaintainerHeader" xml:space="preserve">
<value>胡桃开发/运维</value>
<value>胡桃の運用と開発または保守</value>
</data>
<data name="ViewPageSettingHutaoPassportRedeemCodeDescription" xml:space="preserve">
<value>我们有时会向某些用户赠送胡桃云兑换码</value>
<value>胡桃クラウドの引き替えコードを一部のユーザーに配布する事があります。</value>
</data>
<data name="ViewPageSettingHutaoPassportRedeemCodeHeader" xml:space="preserve">
<value>使用兑换码</value>
<value>引き替えコードの使用</value>
</data>
<data name="ViewPageSettingHutaoPassportRegisterAction" xml:space="preserve">
<value>注册</value>
<value>登録</value>
</data>
<data name="ViewPageSettingHutaoPassportResetPasswordAction" xml:space="preserve">
<value>修改密码</value>
<value>パスワードの変更</value>
</data>
<data name="ViewPageSettingHutaoPassportUnregisterAction" xml:space="preserve">
<value>注销账号</value>
<value>アカウントの削除</value>
</data>
<data name="ViewPageSettingIsAdvancedLaunchOptionsEnabledDescription" xml:space="preserve">
<value>原神およびSnap Hutaoの利用規約を全て熟読し、その後に『ゲームランチャー - 上級者向け設定』を有効にします。</value>

View File

@@ -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>();
LaunchGameAccountNameDialog dialog = await contentDialogFactory.CreateInstanceAsync<LaunchGameAccountNameDialog>().ConfigureAwait(false);
(bool isOk, string name) = await dialog.GetInputNameAsync().ConfigureAwait(false);
if (isOk)

View File

@@ -280,7 +280,6 @@
Text="{shcm:ResourceString Name=ViewUserUser}"/>
<ListView
Grid.Row="1"
MaxHeight="224"
Margin="4"
ItemsSource="{Binding Users}"
SelectedItem="{Binding SelectedUser, Mode=TwoWay}"

View File

@@ -7,6 +7,7 @@ using Microsoft.UI.Xaml.Controls.Primitives;
using Snap.Hutao.Core;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Core.IO.DataTransfer;
using Snap.Hutao.Factory.Abstraction;
using Snap.Hutao.Service.Navigation;
using Snap.Hutao.Service.Notification;
using Snap.Hutao.Service.SignIn;
@@ -28,6 +29,7 @@ namespace Snap.Hutao.ViewModel.User;
[Injection(InjectAs.Singleton)]
internal sealed partial class UserViewModel : ObservableObject
{
private readonly IContentDialogFactory contentDialogFactory;
private readonly IDocumentationProvider documentationProvider;
private readonly INavigationService navigationService;
private readonly IServiceProvider serviceProvider;
@@ -131,7 +133,7 @@ internal sealed partial class UserViewModel : ObservableObject
await taskContext.SwitchToMainThreadAsync();
// Get cookie from user input
UserDialog dialog = serviceProvider.CreateInstance<UserDialog>();
UserDialog dialog = await contentDialogFactory.CreateInstanceAsync<UserDialog>().ConfigureAwait(false);
ValueResult<bool, string> result = await dialog.GetInputCookieAsync().ConfigureAwait(false);
// User confirms the input

View File

@@ -168,7 +168,7 @@ internal static class ApiEndpoints
}
#endregion
#region
#region ApiTakumiEventBbsSignReward
/// <summary>
/// 签到活动Id
@@ -367,6 +367,19 @@ internal static class ApiEndpoints
public const string AccountCreateActionTicket = $"{PassportApi}/account/ma-cn-verifier/app/createActionTicketByToken";
#endregion
#region PublicDataApi
/// <summary>
/// 获取 fingerprint
/// </summary>
public const string DeviceFpGetFp = $"{PublicDataApiDeviceFpApi}/getFp";
public static string DeviceFpGetExtList(int platform)
{
return $"{PublicDataApiDeviceFpApi}/getExtList?platform={platform:D}";
}
#endregion
#region SdkStaticLauncherApi
/// <summary>
@@ -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";

View File

@@ -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
{
}

View File

@@ -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<string, string> ExtFields { get; set; } = default!;
}