From b472dd7b92d3ceb22f7ae2dc4d018e0dafbe5262 Mon Sep 17 00:00:00 2001 From: Krille Fear Date: Sat, 8 Jan 2022 10:24:40 +0100 Subject: [PATCH] fix: Room Member updates should always be cached I think the commit which broke it was this: e3bd0cf1 It makes sure that only important state events get cached and room member events are not important state events and so new invites have no room member events cached. It makes sense to also allow room member events here to always be cached as they are special typed. --- lib/src/client.dart | 4 +++- test/client_test.dart | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/src/client.dart b/lib/src/client.dart index 9503adc1..534875ae 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -1709,7 +1709,9 @@ class Client extends MatrixApi { stateEvent.relationshipEventId == room.lastEvent?.relationshipEventId; final importantOrRoomLoaded = - !room.partial || importantStateEvents.contains(stateEvent.type); + eventUpdate.type == EventUpdateType.inviteState || + !room.partial || + importantStateEvents.contains(stateEvent.type); if ((noMessageOrNoEdit || editingLastEvent || consecutiveEdit) && importantOrRoomLoaded) { room.setState(stateEvent); diff --git a/test/client_test.dart b/test/client_test.dart index f480b1e4..81162794 100644 --- a/test/client_test.dart +++ b/test/client_test.dart @@ -141,6 +141,11 @@ void main() { matrix.rooms[1].roomAccountData['m.receipt'] ?.content['@alice:example.com']['event_id'], '7365636s6r6432:example.com'); + + final inviteRoom = matrix.rooms + .singleWhere((room) => room.membership == Membership.invite); + expect(inviteRoom.name, 'My Room Name'); + expect(inviteRoom.states[EventTypes.RoomMember]?.length, 1); expect(matrix.rooms.length, 2); expect(matrix.rooms[1].canonicalAlias, "#famedlyContactDiscovery:${matrix.userID!.split(":")[1]}");