🐛 Fix invites do not preload direct message members

This commit is contained in:
LittleSheep 2025-05-17 03:23:01 +08:00
parent 8ab17569ee
commit d59dba9c02

View File

@ -450,6 +450,28 @@ public class ChatRoomController(
.Include(e => e.Account.Profile)
.ToListAsync();
var directRoomsId = members
.Where(m => m.ChatRoom.Type == ChatRoomType.DirectMessage)
.Select(m => m.ChatRoom.Id)
.ToList();
var directMembers = directRoomsId.Count != 0
? await db.ChatMembers
.Where(m => directRoomsId.Contains(m.ChatRoomId))
.Where(m => m.AccountId != userId)
.Include(m => m.Account)
.Include(m => m.Account.Profile)
.ToDictionaryAsync(m => m.ChatRoomId, m => m)
: new Dictionary<Guid, ChatMember>();
// Map the results
members.ForEach(m =>
{
if (m.ChatRoom.Type == ChatRoomType.DirectMessage && directMembers.TryGetValue(m.ChatRoomId, out var otherMember))
m.ChatRoom.DirectMembers = new List<ChatMemberTransmissionObject>
{ ChatMemberTransmissionObject.FromEntity(otherMember) };
});
return members.ToList();
}