Files
forkmessager/backend/src/Modules/Auth/Infrastructure/Services/UserDisplayNameProvider.cs
T

43 lines
1.3 KiB
C#

using Knot.Shared.Kernel;
namespace Knot.Modules.Auth.Infrastructure.Services;
public sealed class UserDisplayNameProvider : IUserDisplayNameProvider
{
private readonly IUserRepository _userRepository;
public UserDisplayNameProvider(IUserRepository userRepository)
{
_userRepository = userRepository;
}
public async Task<string> GetDisplayNameAsync(Guid userId, CancellationToken ct = default)
{
var user = await _userRepository.GetByIdAsync(userId, ct);
return user?.DisplayName ?? "User";
}
public async Task<UserInfo?> GetUserInfoAsync(Guid userId, CancellationToken ct = default)
{
var user = await _userRepository.GetByIdAsync(userId, ct);
if (user == null)
{
return null;
}
return new UserInfo(user.Id, user.Username, user.DisplayName, user.Avatar);
}
public async Task<IReadOnlyDictionary<Guid, UserInfo>> GetUsersInfoAsync(IEnumerable<Guid> userIds, CancellationToken ct = default)
{
var users = await _userRepository.GetByIdsAsync(userIds, ct);
var result = new System.Collections.Generic.Dictionary<Guid, UserInfo>();
foreach (var user in users)
{
result[user.Id] = new UserInfo(user.Id, user.Username, user.DisplayName, user.Avatar);
}
return result;
}
}