Merge branch 'krille/post-load-users' into 'main'

fix: Post load all users on room opening

See merge request famedly/company/frontend/famedlysdk!998
This commit is contained in:
Krille Fear 2022-04-01 06:36:51 +00:00
commit 21378313c3
2 changed files with 20 additions and 7 deletions

View File

@ -1275,8 +1275,7 @@ class Room {
void Function()? onUpdate, void Function()? onUpdate,
}) async { }) async {
await postLoad(); await postLoad();
var events; final events = await client.database?.getEventList(
events = await client.database?.getEventList(
this, this,
limit: defaultHistoryCount, limit: defaultHistoryCount,
) ?? ) ??
@ -1288,13 +1287,20 @@ class Room {
for (var i = 0; i < events.length; i++) { for (var i = 0; i < events.length; i++) {
if (events[i].type == EventTypes.Encrypted && if (events[i].type == EventTypes.Encrypted &&
events[i].content['can_request_session'] == true) { events[i].content['can_request_session'] == true) {
events[i] = await client.encryption events[i] = await client.encryption!
?.decryptRoomEvent(id, events[i], store: true); .decryptRoomEvent(id, events[i], store: true);
} }
} }
}); });
} }
// Fetch all users from database we have got here.
for (final event in events) {
if (getState(EventTypes.RoomMember, event.senderId) != null) continue;
final dbUser = await client.database?.getUser(event.senderId, this);
if (dbUser != null) setState(dbUser);
}
final timeline = Timeline( final timeline = Timeline(
room: this, room: this,
events: events, events: events,
@ -1303,9 +1309,6 @@ class Room {
onInsert: onInsert, onInsert: onInsert,
onUpdate: onUpdate, onUpdate: onUpdate,
); );
if (client.database == null) {
await requestHistory(historyCount: 10);
}
return timeline; return timeline;
} }

View File

@ -85,6 +85,16 @@ class Timeline {
limit: Room.defaultHistoryCount, limit: Room.defaultHistoryCount,
); );
if (eventsFromStore != null && eventsFromStore.isNotEmpty) { if (eventsFromStore != null && eventsFromStore.isNotEmpty) {
// Fetch all users from database we have got here.
for (final event in events) {
if (room.getState(EventTypes.RoomMember, event.senderId) != null) {
continue;
}
final dbUser =
await room.client.database?.getUser(event.senderId, room);
if (dbUser != null) room.setState(dbUser);
}
events.addAll(eventsFromStore); events.addAll(eventsFromStore);
final startIndex = events.length - eventsFromStore.length; final startIndex = events.length - eventsFromStore.length;
final endIndex = events.length; final endIndex = events.length;