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)
{