🐛 Fix DM room member loading issue
This commit is contained in:
@@ -45,7 +45,8 @@ public class ChatRoomService(
|
|||||||
if (member is not null) return member;
|
if (member is not null) return member;
|
||||||
|
|
||||||
member = await db.ChatMembers
|
member = await db.ChatMembers
|
||||||
.Where(m => m.AccountId == accountId && m.ChatRoomId == chatRoomId && m.JoinedAt != null && m.LeaveAt == null)
|
.Where(m => m.AccountId == accountId && m.ChatRoomId == chatRoomId && m.JoinedAt != null &&
|
||||||
|
m.LeaveAt == null)
|
||||||
.Include(m => m.ChatRoom)
|
.Include(m => m.ChatRoom)
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
@@ -95,7 +96,7 @@ public class ChatRoomService(
|
|||||||
? await db.ChatMembers
|
? await db.ChatMembers
|
||||||
.Where(m => directRoomsId.Contains(m.ChatRoomId))
|
.Where(m => directRoomsId.Contains(m.ChatRoomId))
|
||||||
.Where(m => m.AccountId != userId)
|
.Where(m => m.AccountId != userId)
|
||||||
.Where(m => m.JoinedAt != null && m.LeaveAt == null)
|
// Ignored the joined at condition here to keep showing userinfo when other didn't accept the invite of DM
|
||||||
.ToListAsync()
|
.ToListAsync()
|
||||||
: [];
|
: [];
|
||||||
members = await LoadMemberAccounts(members);
|
members = await LoadMemberAccounts(members);
|
||||||
@@ -156,12 +157,15 @@ public class ChatRoomService(
|
|||||||
var accountIds = members.Select(m => m.AccountId).ToList();
|
var accountIds = members.Select(m => m.AccountId).ToList();
|
||||||
var accounts = (await accountsHelper.GetAccountBatch(accountIds)).ToDictionary(a => Guid.Parse(a.Id), a => a);
|
var accounts = (await accountsHelper.GetAccountBatch(accountIds)).ToDictionary(a => Guid.Parse(a.Id), a => a);
|
||||||
|
|
||||||
return [.. members.Select(m =>
|
return
|
||||||
{
|
[
|
||||||
if (accounts.TryGetValue(m.AccountId, out var account))
|
.. members.Select(m =>
|
||||||
m.Account = SnAccount.FromProtoValue(account);
|
{
|
||||||
return m;
|
if (accounts.TryGetValue(m.AccountId, out var account))
|
||||||
})];
|
m.Account = SnAccount.FromProtoValue(account);
|
||||||
|
return m;
|
||||||
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
private const string ChatRoomSubscribeKeyPrefix = "chatroom:subscribe:";
|
private const string ChatRoomSubscribeKeyPrefix = "chatroom:subscribe:";
|
||||||
@@ -192,4 +196,4 @@ public class ChatRoomService(
|
|||||||
var keys = await cache.GetGroupKeysAsync(group);
|
var keys = await cache.GetGroupKeysAsync(group);
|
||||||
return keys.Select(k => Guid.Parse(k.Split(':').Last())).ToList();
|
return keys.Select(k => Guid.Parse(k.Split(':').Last())).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user