From 7351319f28ec4096e39e2f39425ee7fea3ad6520 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Thu, 2 Jul 2020 10:32:11 +0200 Subject: [PATCH] address things --- lib/src/client.dart | 24 +++++++++++++++++------- lib/src/database/database.dart | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/src/client.dart b/lib/src/client.dart index 5efec41..8e7a713 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -91,13 +91,13 @@ class Client { verificationMethods ??= {}; importantStateEvents ??= {}; importantStateEvents.addAll([ - 'm.room.name', - 'm.room.avatar', - 'm.room.message', - 'm.room.encrypted', - 'm.room.encryption', - 'm.room.canonical_alias', - 'm.room.tombstone', + EventTypes.RoomName, + EventTypes.RoomAvatar, + EventTypes.Message, + EventTypes.Encrypted, + EventTypes.Encryption, + EventTypes.RoomCanonicalAlias, + EventTypes.RoomTombstone, ]); api = MatrixApi(debug: debug, httpClient: httpClient); onLoginStateChanged.stream.listen((loginState) { @@ -980,6 +980,16 @@ class Client { if (event['type'] == EventTypes.Encrypted && encryptionEnabled) { update = await update.decrypt(room); } + if (event['type'] == EventTypes.Message && + !room.isDirectChat && + database != null && + room.getState(EventTypes.RoomMember, event['sender']) == null) { + // In order to correctly render room list previews we need to fetch the member from the database + final user = await database.getUser(id, event['sender'], room); + if (user != null) { + room.setState(user); + } + } if (type != 'ephemeral' && database != null) { await database.storeEventUpdate(id, update); } diff --git a/lib/src/database/database.dart b/lib/src/database/database.dart index 69052c6..c329d0b 100644 --- a/lib/src/database/database.dart +++ b/lib/src/database/database.dart @@ -199,7 +199,7 @@ class Database extends _$Database { // we limit to only fetching 500 rooms at once. // This value might be fine-tune-able to be larger (and thus increase performance more for very large accounts), // however this very conservative value should be on the safe side. - final MAX_ROOMS_PER_QUERY = 500; + const MAX_ROOMS_PER_QUERY = 500; // as we iterate over our entries in separate chunks one-by-one we use an iterator // which persists accross the chunks, and thus we just re-sume iteration at the place // we prreviously left off.