From 85d7b22e11e25945eaa16498d872554be853a95d Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Tue, 17 Oct 2023 20:29:14 +0800 Subject: [PATCH] auto select existed account when detecting --- src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs | 6 +++++- src/Snap.Hutao/Snap.Hutao/Service/Game/IGameService.cs | 6 +----- .../Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs | 10 +++++++++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs index 66317d61..377c7a34 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs @@ -281,7 +281,7 @@ internal sealed partial class GameService : IGameService } /// - public async ValueTask DetectGameAccountAsync() + public async ValueTask DetectGameAccountAsync() { ArgumentNullException.ThrowIfNull(gameAccounts); @@ -318,7 +318,11 @@ internal sealed partial class GameService : IGameService gameAccounts.Add(account); } } + + return account; } + + return default; } /// diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/IGameService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/IGameService.cs index 6afc58eb..19ad9808 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/IGameService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/IGameService.cs @@ -26,11 +26,7 @@ internal interface IGameService /// uid void AttachGameAccountToUid(GameAccount gameAccount, string uid); - /// - /// 检测并尝试添加游戏内账户 - /// - /// 任务 - ValueTask DetectGameAccountAsync(); + ValueTask DetectGameAccountAsync(); /// /// 异步获取游戏路径 diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs index b82c1738..4badbf36 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs @@ -236,7 +236,15 @@ internal sealed partial class LaunchGameViewModel : Abstraction.ViewModel { try { - await gameService.DetectGameAccountAsync().ConfigureAwait(false); + GameAccount? account = await gameService.DetectGameAccountAsync().ConfigureAwait(false); + + // If user canceled the operation, the return is null, + // and thus we should not set SelectedAccount + if (account is not null) + { + await taskContext.SwitchToMainThreadAsync(); + SelectedGameAccount = account; + } } catch (UserdataCorruptedException ex) {