diff --git a/src/Snap.Hutao/Snap.Hutao.Test/CSharpLanguageFeatureTest.cs b/src/Snap.Hutao/Snap.Hutao.Test/CSharpLanguageFeatureTest.cs
index 1d6d72ff..d4cd3976 100644
--- a/src/Snap.Hutao/Snap.Hutao.Test/CSharpLanguageFeatureTest.cs
+++ b/src/Snap.Hutao/Snap.Hutao.Test/CSharpLanguageFeatureTest.cs
@@ -95,5 +95,13 @@ public class CSharpLanguageFeatureTest
Assert.AreEqual(3, count);
}
+ [TestMethod]
+ public void RangeTrimLastOne()
+ {
+ int[] array = { 1, 2, 3, 4 };
+
+ Assert.AreEqual(3, array[..^1].Length);
+ }
+
public static Guid UUID { get => Guid.NewGuid(); }
}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginHoyoverseUserPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginHoyoverseUserPage.xaml
index 06922cab..af598e4a 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginHoyoverseUserPage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginHoyoverseUserPage.xaml
@@ -21,7 +21,7 @@
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginHoyoverseUserPage.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginHoyoverseUserPage.xaml.cs
index 938187a7..f660a987 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginHoyoverseUserPage.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginHoyoverseUserPage.xaml.cs
@@ -70,7 +70,8 @@ internal sealed partial class LoginHoyoverseUserPage : Microsoft.UI.Xaml.Control
}
}
- private async Task HandleCurrentCookieAsync(CancellationToken token = default)
+ [Command("HandleCurrentCookieCommand")]
+ private async Task HandleCurrentCookieAsync()
{
CoreWebView2CookieManager manager = WebView.CoreWebView2.CookieManager;
IReadOnlyList cookies = await manager.GetCookiesAsync("https://account.hoyoverse.com");
@@ -78,13 +79,13 @@ internal sealed partial class LoginHoyoverseUserPage : Microsoft.UI.Xaml.Control
IInfoBarService infoBarService = Ioc.Default.GetRequiredService();
Cookie loginTicketCookie = Cookie.FromCoreWebView2Cookies(cookies);
- string uid = await GetUidFromCookieAsync(Ioc.Default, loginTicketCookie, token).ConfigureAwait(false);
+ string uid = await GetUidFromCookieAsync(Ioc.Default, loginTicketCookie).ConfigureAwait(false);
loginTicketCookie[Cookie.LOGIN_UID] = uid;
// 使用 loginTicket 获取 stoken
Response> multiTokenResponse = await Ioc.Default
.GetRequiredService()
- .GetMultiTokenByLoginTicketAsync(loginTicketCookie, true, token)
+ .GetMultiTokenByLoginTicketAsync(loginTicketCookie, true)
.ConfigureAwait(false);
if (!multiTokenResponse.IsOk())
@@ -109,11 +110,6 @@ internal sealed partial class LoginHoyoverseUserPage : Microsoft.UI.Xaml.Control
.ConfigureAwait(false);
}
- private void CookieButtonClick(object sender, RoutedEventArgs e)
- {
- HandleCurrentCookieAsync().SafeForget();
- }
-
private sealed class WebApiResponse
{
[JsonPropertyName("code")]
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml
index 13489497..45d53cca 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml
@@ -21,7 +21,7 @@
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml.cs
index d55da03a..9bcb5d66 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml.cs
@@ -49,7 +49,8 @@ internal sealed partial class LoginMihoyoUserPage : Microsoft.UI.Xaml.Controls.P
}
}
- private async Task HandleCurrentCookieAsync(CancellationToken token = default)
+ [Command("HandleCurrentCookieCommand")]
+ private async Task HandleCurrentCookieAsync()
{
CoreWebView2CookieManager manager = WebView.CoreWebView2.CookieManager;
IReadOnlyList cookies = await manager.GetCookiesAsync("https://user.mihoyo.com");
@@ -57,7 +58,7 @@ internal sealed partial class LoginMihoyoUserPage : Microsoft.UI.Xaml.Controls.P
Cookie loginTicketCookie = Cookie.FromCoreWebView2Cookies(cookies);
Response> multiTokenResponse = await Ioc.Default
.GetRequiredService()
- .GetMultiTokenByLoginTicketAsync(loginTicketCookie, false, token)
+ .GetMultiTokenByLoginTicketAsync(loginTicketCookie, false)
.ConfigureAwait(false);
if (!multiTokenResponse.IsOk())
@@ -71,7 +72,7 @@ internal sealed partial class LoginMihoyoUserPage : Microsoft.UI.Xaml.Controls.P
Response loginResultResponse = await Ioc.Default
.GetRequiredService()
- .LoginBySTokenAsync(stokenV1, token)
+ .LoginBySTokenAsync(stokenV1)
.ConfigureAwait(false);
if (!loginResultResponse.IsOk())
@@ -92,9 +93,4 @@ internal sealed partial class LoginMihoyoUserPage : Microsoft.UI.Xaml.Controls.P
.HandleUserOptionResultAsync(result, nickname)
.ConfigureAwait(false);
}
-
- private void CookieButtonClick(object sender, RoutedEventArgs e)
- {
- HandleCurrentCookieAsync().SafeForget();
- }
}
diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Passport/PassportClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Passport/PassportClient.cs
index 2bbd77df..7bae8430 100644
--- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Passport/PassportClient.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Passport/PassportClient.cs
@@ -48,7 +48,7 @@ internal sealed partial class PassportClient
/// 取消令牌
/// 登录数据
[ApiInformation(Salt = SaltType.PROD)]
- public async Task> LoginBySTokenAsync(Cookie stokenV1, CancellationToken token)
+ public async Task> LoginBySTokenAsync(Cookie stokenV1, CancellationToken token = default)
{
HttpResponseMessage message = await httpClient
.SetHeader("Cookie", stokenV1.ToString())
diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Auth/AuthClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Auth/AuthClient.cs
index efa62159..4088973a 100644
--- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Auth/AuthClient.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Auth/AuthClient.cs
@@ -51,7 +51,7 @@ internal sealed partial class AuthClient
/// 是否为国际服
/// 取消令牌
/// 包含token的字典
- public async Task>> GetMultiTokenByLoginTicketAsync(Cookie cookie, bool isOversea, CancellationToken token)
+ public async Task>> GetMultiTokenByLoginTicketAsync(Cookie cookie, bool isOversea, CancellationToken token = default)
{
string loginTicket = cookie[Cookie.LOGIN_TICKET];
string loginUid = cookie[Cookie.LOGIN_UID];