Skip to content

Commit b40dac0

Browse files
committed
🐛 修复战网安装有多个存在时保存账号闪退问题
1 parent 35be6db commit b40dac0

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

src/BD.WTTS.Client.Plugins.GameAccount/Services.Implementation/BasicPlatformSwitcher.cs

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Newtonsoft.Json;
22
using Newtonsoft.Json.Linq;
3+
using System.Text.Json.Nodes;
34
using AppResources = BD.WTTS.Client.Resources.Strings;
45

56
namespace BD.WTTS.Services.Implementation;
@@ -515,7 +516,47 @@ public async ValueTask<bool> CurrnetUserAdd(string name, PlatformAccount platfor
515516
if (js == null)
516517
continue;
517518

518-
var originalValue = js.SelectToken(selector);
519+
JToken? originalValue = null;
520+
521+
try
522+
{
523+
originalValue = js.SelectToken(selector);
524+
}
525+
catch (Exception ex)
526+
{
527+
Log.Error(nameof(CurrnetUserAdd), ex, $"Failed to select token: {selector}");
528+
}
529+
530+
if (originalValue == null)
531+
{
532+
// 尝试以数组形式再次寻找
533+
try
534+
{
535+
var tokens = js.SelectTokens(selector);
536+
537+
//暂时将就写一个临时的战网处理方法解决问题
538+
if (platform.Platform == ThirdpartyPlatform.BattleNet)
539+
{
540+
originalValue = tokens.FirstOrDefault(x =>
541+
{
542+
var temp = x.Parent?.Parent?.Parent?.Parent?["Path"]?.Value<string>();
543+
var temp2 = platform.FolderPath;
544+
if (temp != null && temp2 != null)
545+
return string.Equals(
546+
temp.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar),
547+
temp2.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar),
548+
StringComparison.OrdinalIgnoreCase);
549+
return false;
550+
});
551+
}
552+
originalValue ??= tokens.FirstOrDefault();
553+
}
554+
catch (Exception ex)
555+
{
556+
Log.Error(nameof(CurrnetUserAdd), ex, $"Failed to select tokens: {selector}");
557+
}
558+
}
559+
519560
if (originalValue == null)
520561
continue;
521562

0 commit comments

Comments
 (0)