From d59dba9c02bb1665311df73829428ced89f5cd16 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 17 May 2025 03:23:01 +0800 Subject: [PATCH] :bug: Fix invites do not preload direct message members --- .../Chat/ChatRoomController.cs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/DysonNetwork.Sphere/Chat/ChatRoomController.cs b/DysonNetwork.Sphere/Chat/ChatRoomController.cs index 57a16f8..30f644d 100644 --- a/DysonNetwork.Sphere/Chat/ChatRoomController.cs +++ b/DysonNetwork.Sphere/Chat/ChatRoomController.cs @@ -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(); + + // 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.FromEntity(otherMember) }; + }); + return members.ToList(); }