This commit is contained in:
Lightczx
2024-02-19 11:33:27 +08:00
parent d169f355f3
commit 7dec87586b
3 changed files with 14 additions and 17 deletions

View File

@@ -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;
}

View File

@@ -96,7 +96,7 @@ internal sealed class User : ObservableObject, IEntityOnly<EntityUser>, 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<EntityUser>, 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<AppDbContext>().Users.UpdateAndSave(inner);

View File

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