diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/SettingsStyle.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/SettingsStyle.xaml index f0182d63..ab5cb42f 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Theme/SettingsStyle.xaml +++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/SettingsStyle.xaml @@ -4,6 +4,9 @@ 0 0 0 + + 120 + diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index 66afb624..4dbcbd3e 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -539,6 +539,9 @@ 验证失败 + + 验证码已发送至邮箱 + 验证请求过快,请 1 分钟后再试 @@ -1163,6 +1166,18 @@ 配置无感验证接口 + + 登录胡桃通行证 + + + 注册胡桃通行证 + + + 重置胡桃通行证密码 + + + 注销胡桃通行证账号 + 导出 App @@ -1925,6 +1940,9 @@ 重置密码 + + 注销账号的数据将永远丢失,无法恢复 + 请输入邮箱 @@ -2207,8 +2225,50 @@ 主页 + + 三思而后行 + + + 危险操作 + + + 胡桃云服务到期时间 + - 胡桃账号 + 胡桃通行证账号 + + + 您可以无限制使用任何基于胡桃云服务的功能 + + + 已认证的合作开发者 + + + 登录 + + + 退出登录 + + + 您可以无限制的使用任何测试功能 + + + 胡桃开发/运维 + + + 我们有时会向某些用户赠送胡桃云兑换码 + + + 使用兑换码 + + + 注册 + + + 修改密码 + + + 注销账号 在完整阅读原神和胡桃工具箱用户协议后,我选择启用「启动游戏-高级功能」 diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Hutao/HutaoUserOptions.cs b/src/Snap.Hutao/Snap.Hutao/Service/Hutao/HutaoUserOptions.cs index a5549861..e035b262 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Hutao/HutaoUserOptions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Hutao/HutaoUserOptions.cs @@ -21,6 +21,7 @@ internal sealed class HutaoUserOptions : ObservableObject, IOptions @@ -55,6 +56,8 @@ internal sealed class HutaoUserOptions : ObservableObject, IOptions public string? GachaLogExpireAt { get => gachaLogExpireAt; set => SetProperty(ref gachaLogExpireAt, value); } + public string? GachaLogExpireAtSlim { get => gachaLogExpireAtSlim; set => SetProperty(ref gachaLogExpireAtSlim, value); } + /// public HutaoUserOptions Value { get => this; } @@ -71,6 +74,14 @@ internal sealed class HutaoUserOptions : ObservableObject, IOptions /// 登录失败 /// @@ -94,9 +105,19 @@ internal sealed class HutaoUserOptions : ObservableObject, IOptions DateTimeOffset.Now; } + private void ClearUserInfo() + { + IsLicensedDeveloper = false; + IsMaintainer = false; + GachaLogExpireAt = null; + GachaLogExpireAtSlim = null; + IsCloudServiceAllowed = false; + } + public async ValueTask GetTokenAsync() { await initializedTaskCompletionSource.Task.ConfigureAwait(false); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Navigation/DocumentationProvider.cs b/src/Snap.Hutao/Snap.Hutao/Service/Navigation/DocumentationProvider.cs index b21f1f62..c8fe5d6a 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Navigation/DocumentationProvider.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Navigation/DocumentationProvider.cs @@ -19,7 +19,6 @@ internal sealed partial class DocumentationProvider : IDocumentationProvider [typeof(CultivationPage)] = "https://hut.ao/features/develop-plan.html", [typeof(DailyNotePage)] = "https://hut.ao/features/real-time-notes.html", [typeof(GachaLogPage)] = "https://hut.ao/features/wish-export.html", - [typeof(HutaoPassportPage)] = "https://hut.ao/zh/features/hutao-settings.html#%E8%83%A1%E6%A1%83%E5%B8%90%E5%8F%B7", [typeof(LaunchGamePage)] = "https://hut.ao/features/game-launcher.html", [typeof(LoginHoyoverseUserPage)] = "https://hut.ao/features/mhy-account-switch.html", [typeof(LoginMihoyoUserPage)] = "https://hut.ao/features/mhy-account-switch.html", diff --git a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj index e84ef19c..90d98569 100644 --- a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj +++ b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj @@ -150,6 +150,10 @@ + + + + @@ -163,7 +167,6 @@ - @@ -302,6 +305,30 @@ + + + + MSBuild:Compile + + + + + + MSBuild:Compile + + + + + + MSBuild:Compile + + + + + + MSBuild:Compile + + @@ -488,12 +515,6 @@ MSBuild:Compile - - - - MSBuild:Compile - - diff --git a/src/Snap.Hutao/Snap.Hutao/View/Dialog/HutaoPassportLoginDialog.xaml b/src/Snap.Hutao/Snap.Hutao/View/Dialog/HutaoPassportLoginDialog.xaml new file mode 100644 index 00000000..3fef6d2f --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/View/Dialog/HutaoPassportLoginDialog.xaml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/View/Dialog/HutaoPassportLoginDialog.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Dialog/HutaoPassportLoginDialog.xaml.cs new file mode 100644 index 00000000..0b24bb6d --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/View/Dialog/HutaoPassportLoginDialog.xaml.cs @@ -0,0 +1,28 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Microsoft.UI.Xaml.Controls; + +namespace Snap.Hutao.View.Dialog; + +[DependencyProperty("UserName", typeof(string))] +[DependencyProperty("Password", typeof(string))] +internal sealed partial class HutaoPassportLoginDialog : ContentDialog +{ + private readonly ITaskContext taskContext; + + public HutaoPassportLoginDialog(IServiceProvider serviceProvider) + { + InitializeComponent(); + + taskContext = serviceProvider.GetRequiredService(); + } + + public async ValueTask> GetInputAsync() + { + await taskContext.SwitchToMainThreadAsync(); + ContentDialogResult result = await ShowAsync(); + + return new(result is ContentDialogResult.Primary, (UserName, Password)); + } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/View/Dialog/HutaoPassportRegisterDialog.xaml b/src/Snap.Hutao/Snap.Hutao/View/Dialog/HutaoPassportRegisterDialog.xaml new file mode 100644 index 00000000..a826c6da --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/View/Dialog/HutaoPassportRegisterDialog.xaml @@ -0,0 +1,40 @@ + + + + + + + + + + +