diff --git a/lib/src/client.dart b/lib/src/client.dart index 53e12665..4b18e79c 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -1701,7 +1701,7 @@ class Client extends MatrixApi { // TODO: This method seems to be comperatively slow for some updates await _handleEphemerals( room, - ephemeral.map((i) => i.toJson()).toList(), + ephemeral, ); } @@ -1747,21 +1747,21 @@ class Client extends MatrixApi { } } - Future _handleEphemerals(Room room, List events) async { + Future _handleEphemerals(Room room, List events) async { for (final event in events) { - await _handleEvent(event, room, EventUpdateType.ephemeral); + await _handleEvent(event.toJson(), room, EventUpdateType.ephemeral); // Receipt events are deltas between two states. We will create a // fake room account data event for this and store the difference // there. - if (event['type'] == 'm.receipt') { + if (event.type == 'm.receipt') { final receiptStateContent = room.roomAccountData['m.receipt']?.content ?? {}; - for (final eventEntry in event['content'].entries) { - final String eventID = eventEntry.key; - if (event['content'][eventID]['m.read'] != null) { + for (final eventEntry in event.content.entries) { + final eventID = eventEntry.key; + if (event.content[eventID]['m.read'] != null) { final Map userTimestampMap = - event['content'][eventID]['m.read']; + event.content[eventID]['m.read']; for (final userTimestampMapEntry in userTimestampMap.entries) { final mxid = userTimestampMapEntry.key; @@ -1782,8 +1782,8 @@ class Client extends MatrixApi { } } } - event['content'] = receiptStateContent; - await _handleEvent(event, room, EventUpdateType.accountData); + event.content = receiptStateContent; + await _handleEvent(event.toJson(), room, EventUpdateType.accountData); } } }