diff --git a/src/Snap.Hutao/Snap.Hutao/Service/User/UserInitializationService.cs b/src/Snap.Hutao/Snap.Hutao/Service/User/UserInitializationService.cs index 3c599f99..3f551ae7 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/User/UserInitializationService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/User/UserInitializationService.cs @@ -90,17 +90,6 @@ internal sealed partial class UserInitializationService : IUserInitializationSer await userFingerprintService.TryInitializeAsync(user, token).ConfigureAwait(false); - // Should not raise propery changed event below - if (user.PerferredUid is not null) - { - user.SetSelectedUserGameRole(user.UserGameRoles.FirstOrDefault(role => role.GameUid == user.PerferredUid), false); - } - - if (user.SelectedUserGameRole is null) - { - user.SetSelectedUserGameRole(user.UserGameRoles.FirstOrFirstOrDefault(role => role.IsChosen), false); - } - return user.IsInitialized = true; } diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/User/User.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/User/User.cs index d36096cb..99c42095 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/User/User.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/User/User.cs @@ -96,7 +96,7 @@ internal sealed class User : ObservableObject, IEntityOnly, IMapping public bool NeedDbUpdateAfterResume { get; set; } - public string? PerferredUid { get => inner.PreferredUid; } + public string? PreferredUid { get => inner.PreferredUid; } public static User From(EntityUser user, IServiceProvider provider) { @@ -107,9 +107,9 @@ internal sealed class User : ObservableObject, IEntityOnly, IMapping { if (SetProperty(ref selectedUserGameRole, value, nameof(SelectedUserGameRole))) { - if (inner.PreferredUid != value?.GameUid) + if (value is not null && inner.PreferredUid != value.GameUid) { - inner.PreferredUid = value?.GameUid; + inner.PreferredUid = value.GameUid; using (IServiceScope scope = serviceProvider.CreateScope()) { scope.ServiceProvider.GetRequiredService().Users.UpdateAndSave(inner); diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/User/UserViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/User/UserViewModel.cs index 8459a6ed..6b853216 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/User/UserViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/User/UserViewModel.cs @@ -53,10 +53,18 @@ internal sealed partial class UserViewModel : ObservableObject get => selectedUser ??= userService.Current; set { - if (value is { SelectedUserGameRole: null }) + if (value is not null) { - // Pre select the chosen role to avoid multiple UserChangedMessage - value.SetSelectedUserGameRole(value.UserGameRoles.FirstOrFirstOrDefault(role => role.IsChosen), false); + // Should not raise propery changed event below + if (value.PreferredUid is not null) + { + value.SetSelectedUserGameRole(value.UserGameRoles.FirstOrDefault(role => role.GameUid == value.PreferredUid), false); + } + + if (value.SelectedUserGameRole is null) + { + value.SetSelectedUserGameRole(value.UserGameRoles.FirstOrFirstOrDefault(role => role.IsChosen), false); + } } if (SetProperty(ref selectedUser, value))