refactor: Improve getTimeline senders

This creates a set before
requesting users from the
database. This prevents
doing the same check for
the same user multiple
times and also prevents
concurrent modifications
of the event list.
This commit is contained in:
krille-chan 2024-01-20 09:00:01 +01:00 committed by Krille
parent 6dfd18ca47
commit eef79aad2b
No known key found for this signature in database
GPG Key ID: E067ECD60F1A0652
1 changed files with 4 additions and 3 deletions

View File

@ -1499,9 +1499,10 @@ class Room {
// Fetch all users from database we have got here.
if (eventContextId == null) {
for (final event in events) {
if (getState(EventTypes.RoomMember, event.senderId) != null) continue;
final dbUser = await client.database?.getUser(event.senderId, this);
final userIds = events.map((event) => event.senderId).toSet();
for (final userId in userIds) {
if (getState(EventTypes.RoomMember, userId) != null) continue;
final dbUser = await client.database?.getUser(userId, this);
if (dbUser != null) setState(dbUser);
}
}