From d740632c2769ebeb227f69d60cc5a86d4823308f Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Tue, 12 Dec 2023 21:40:18 +0800 Subject: [PATCH] code style --- .../Service/User/IUserCollectionService.cs | 2 + .../Service/User/UserCollectionService.cs | 2 +- .../Service/User/UserOptionResult.cs | 6 +- .../Snap.Hutao/Service/User/UserService.cs | 6 +- src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj | 2 +- .../ViewModel/User/UserViewModel.cs | 118 +++++++++--------- 6 files changed, 68 insertions(+), 68 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Service/User/IUserCollectionService.cs b/src/Snap.Hutao/Snap.Hutao/Service/User/IUserCollectionService.cs index 8db6973f..9d914db6 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/User/IUserCollectionService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/User/IUserCollectionService.cs @@ -20,6 +20,8 @@ internal interface IUserCollectionService UserGameRole? GetUserGameRoleByUid(string uid); ValueTask RemoveUserAsync(BindingUser user); + ValueTask> TryCreateAndAddUserFromCookieAsync(Cookie cookie, bool isOversea); + bool TryGetUserByMid(string mid, [NotNullWhen(true)] out BindingUser? user); } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/User/UserCollectionService.cs b/src/Snap.Hutao/Snap.Hutao/Service/User/UserCollectionService.cs index d0f689cb..8c8fb108 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/User/UserCollectionService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/User/UserCollectionService.cs @@ -153,7 +153,7 @@ internal sealed partial class UserCollectionService : IUserCollectionService if (newUser is null) { - return new(UserOptionResult.Invalid, SH.ServiceUserProcessCookieRequestUserInfoFailed); + return new(UserOptionResult.CookieInvalid, SH.ServiceUserProcessCookieRequestUserInfoFailed); } await GetUserCollectionAsync().ConfigureAwait(false); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/User/UserOptionResult.cs b/src/Snap.Hutao/Snap.Hutao/Service/User/UserOptionResult.cs index 028c0b2d..ddf9f86f 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/User/UserOptionResult.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/User/UserOptionResult.cs @@ -17,15 +17,15 @@ internal enum UserOptionResult /// /// Cookie不完整 /// - Incomplete, + CookieIncomplete, /// /// Cookie信息已经失效 /// - Invalid, + CookieInvalid, /// /// 用户的Cookie成功更新 /// - Updated, + CookieUpdated, } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/User/UserService.cs b/src/Snap.Hutao/Snap.Hutao/Service/User/UserService.cs index ae2dc00d..43b5e233 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/User/UserService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/User/UserService.cs @@ -63,7 +63,7 @@ internal sealed partial class UserService : IUserService, IUserServiceUnsafe if (string.IsNullOrEmpty(mid)) { - return new(UserOptionResult.Invalid, SH.ServiceUserProcessCookieNoMid); + return new(UserOptionResult.CookieInvalid, SH.ServiceUserProcessCookieNoMid); } // 检查 mid 对应用户是否存在 @@ -74,7 +74,7 @@ internal sealed partial class UserService : IUserService, IUserServiceUnsafe if (!cookie.TryGetSToken(isOversea, out Cookie? stoken)) { - return new(UserOptionResult.Invalid, SH.ServiceUserProcessCookieNoSToken); + return new(UserOptionResult.CookieInvalid, SH.ServiceUserProcessCookieNoSToken); } user.SToken = stoken; @@ -82,7 +82,7 @@ internal sealed partial class UserService : IUserService, IUserServiceUnsafe user.CookieToken = cookie.TryGetCookieToken(out Cookie? cookieToken) ? cookieToken : user.CookieToken; await userDbService.UpdateUserAsync(user.Entity).ConfigureAwait(false); - return new(UserOptionResult.Updated, mid); + return new(UserOptionResult.CookieUpdated, mid); } public async ValueTask RefreshCookieTokenAsync(Model.Entity.User user) diff --git a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj index 29bea2fe..615e07e0 100644 --- a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj +++ b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj @@ -305,7 +305,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/User/UserViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/User/UserViewModel.cs index d02df2ad..129b7ff6 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/User/UserViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/User/UserViewModel.cs @@ -52,8 +52,11 @@ internal sealed partial class UserViewModel : ObservableObject get => selectedUser ??= userService.Current; set { - // Pre select the chosen role to avoid multiple UserChangedMessage - value?.SetSelectedUserGameRole(value.UserGameRoles.FirstOrFirstOrDefault(role => role.IsChosen), false); + if (value is { SelectedUserGameRole: null }) + { + // Pre select the chosen role to avoid multiple UserChangedMessage + value.SetSelectedUserGameRole(value.UserGameRoles.FirstOrFirstOrDefault(role => role.IsChosen), false); + } if (SetProperty(ref selectedUser, value)) { @@ -87,13 +90,13 @@ internal sealed partial class UserViewModel : ObservableObject infoBarService.Success(SH.FormatViewModelUserAdded(uid)); break; - case UserOptionResult.Incomplete: + case UserOptionResult.CookieIncomplete: infoBarService.Information(SH.ViewModelUserIncomplete); break; - case UserOptionResult.Invalid: + case UserOptionResult.CookieInvalid: infoBarService.Information(SH.ViewModelUserInvalid); break; - case UserOptionResult.Updated: + case UserOptionResult.CookieUpdated: infoBarService.Success(SH.FormatViewModelUserUpdated(uid)); break; default: @@ -118,16 +121,16 @@ internal sealed partial class UserViewModel : ObservableObject [Command("AddUserCommand")] private Task AddUserAsync() { - return AddUserCoreAsync(false).AsTask(); + return AddUserByManualInputCookieAsync(false).AsTask(); } [Command("AddOverseaUserCommand")] private Task AddOverseaUserAsync() { - return AddUserCoreAsync(true).AsTask(); + return AddUserByManualInputCookieAsync(true).AsTask(); } - private async ValueTask AddUserCoreAsync(bool isOversea) + private async ValueTask AddUserByManualInputCookieAsync(bool isOversea) { // ContentDialog must be created by main thread. await taskContext.SwitchToMainThreadAsync(); @@ -140,9 +143,7 @@ internal sealed partial class UserViewModel : ObservableObject if (result.TryGetValue(out string rawCookie)) { Cookie cookie = Cookie.Parse(rawCookie); - (UserOptionResult optionResult, string uid) = await userService.ProcessInputCookieAsync(cookie, isOversea).ConfigureAwait(false); - await HandleUserOptionResultAsync(optionResult, uid).ConfigureAwait(false); } } @@ -150,22 +151,21 @@ internal sealed partial class UserViewModel : ObservableObject [Command("LoginMihoyoUserCommand")] private void LoginMihoyoUser() { - if (runtimeOptions.IsWebView2Supported) - { - navigationService.Navigate(INavigationAwaiter.Default); - } - else - { - infoBarService.Warning(SH.CoreWebView2HelperVersionUndetected); - } + NavigateToLoginPage(); } [Command("LoginHoyoverseUserCommand")] private void LoginHoyoverseUser() + { + NavigateToLoginPage(); + } + + private void NavigateToLoginPage() + where TPage : Page { if (runtimeOptions.IsWebView2Supported) { - navigationService.Navigate(INavigationAwaiter.Default); + navigationService.Navigate(INavigationAwaiter.Default); } else { @@ -192,9 +192,7 @@ internal sealed partial class UserViewModel : ObservableObject if (sTokenResponse.IsOk()) { Cookie stokenV2 = Cookie.FromLoginResult(sTokenResponse.Data); - (UserOptionResult optionResult, string uid) = await userService.ProcessInputCookieAsync(stokenV2, false).ConfigureAwait(false); - await HandleUserOptionResultAsync(optionResult, uid).ConfigureAwait(false); } } @@ -202,17 +200,19 @@ internal sealed partial class UserViewModel : ObservableObject [Command("RemoveUserCommand")] private async Task RemoveUserAsync(User? user) { - if (user is not null) + if (user is null) { - try - { - await userService.RemoveUserAsync(user).ConfigureAwait(false); - infoBarService.Success(SH.FormatViewModelUserRemoved(user.UserInfo?.Nickname)); - } - catch (UserdataCorruptedException ex) - { - infoBarService.Error(ex); - } + return; + } + + try + { + await userService.RemoveUserAsync(user).ConfigureAwait(false); + infoBarService.Success(SH.FormatViewModelUserRemoved(user.UserInfo?.Nickname)); + } + catch (UserdataCorruptedException ex) + { + infoBarService.Error(ex); } } @@ -243,44 +243,42 @@ internal sealed partial class UserViewModel : ObservableObject [Command("RefreshCookieTokenCommand")] private async Task RefreshCookieTokenAsync() { - if (SelectedUser is not null) + if (SelectedUser is null) { - if (await userService.RefreshCookieTokenAsync(SelectedUser).ConfigureAwait(false)) - { - infoBarService.Success(SH.ViewUserRefreshCookieTokenSuccess); - } - else - { - infoBarService.Warning(SH.ViewUserRefreshCookieTokenWarning); - } + return; + } + + if (await userService.RefreshCookieTokenAsync(SelectedUser).ConfigureAwait(false)) + { + infoBarService.Success(SH.ViewUserRefreshCookieTokenSuccess); + } + else + { + infoBarService.Warning(SH.ViewUserRefreshCookieTokenWarning); } } [Command("ClaimSignInRewardCommand")] private async Task ClaimSignInRewardAsync(AppBarButton? appBarButton) { - if (SelectedUser is not null) + if (!UserAndUid.TryFromUser(SelectedUser, out UserAndUid? userAndUid)) { - if (UserAndUid.TryFromUser(SelectedUser, out UserAndUid? userAndUid)) - { - (bool isOk, string message) = await signInService.ClaimRewardAsync(userAndUid).ConfigureAwait(false); - - if (isOk) - { - infoBarService.Success(message); - } - else - { - await taskContext.SwitchToMainThreadAsync(); - FlyoutBase.ShowAttachedFlyout(appBarButton); - infoBarService.Warning(message); - } - } - else - { - infoBarService.Warning(SH.MustSelectUserAndUid); - } + infoBarService.Warning(SH.MustSelectUserAndUid); + return; } + + (bool isOk, string message) = await signInService.ClaimRewardAsync(userAndUid).ConfigureAwait(false); + + if (isOk) + { + infoBarService.Success(message); + return; + } + + // Manual webview + await taskContext.SwitchToMainThreadAsync(); + FlyoutBase.ShowAttachedFlyout(appBarButton); + infoBarService.Warning(message); } [Command("OpenDocumentationCommand")]