refactor: Pass BasicEvent to handleEvent instead of JSON

This commit is contained in:
Christian Pauly 2022-06-28 08:48:23 +02:00
parent c4cdf6ab4e
commit fc229c5715
1 changed files with 13 additions and 11 deletions

View File

@ -1749,7 +1749,7 @@ class Client extends MatrixApi {
Future<void> _handleEphemerals(Room room, List<BasicRoomEvent> events) async { Future<void> _handleEphemerals(Room room, List<BasicRoomEvent> events) async {
for (final event in events) { for (final event in events) {
await _handleEvent(event.toJson(), room, EventUpdateType.ephemeral); await _handleEvent(event, room, EventUpdateType.ephemeral);
// Receipt events are deltas between two states. We will create a // Receipt events are deltas between two states. We will create a
// fake room account data event for this and store the difference // fake room account data event for this and store the difference
@ -1783,7 +1783,7 @@ class Client extends MatrixApi {
} }
} }
event.content = receiptStateContent; event.content = receiptStateContent;
await _handleEvent(event.toJson(), room, EventUpdateType.accountData); await _handleEvent(event, room, EventUpdateType.accountData);
} }
} }
} }
@ -1794,34 +1794,36 @@ class Client extends MatrixApi {
EventUpdateType type, EventUpdateType type,
) async { ) async {
for (final event in events) { for (final event in events) {
await _handleEvent(event.toJson(), room, type); await _handleEvent(event, room, type);
} }
} }
Future<void> _handleEvent( Future<void> _handleEvent(
Map<String, dynamic> event, BasicEvent event,
Room room, Room room,
EventUpdateType type, EventUpdateType type,
) async { ) async {
// The client must ignore any new m.room.encryption event to prevent // The client must ignore any new m.room.encryption event to prevent
// man-in-the-middle attacks! // man-in-the-middle attacks!
if ((event['type'] == EventTypes.Encryption && if ((event.type == EventTypes.Encryption &&
room.encrypted && room.encrypted &&
event['content']['algorithm'] != event.content['algorithm'] !=
room.getState(EventTypes.Encryption)?.content['algorithm'])) { room.getState(EventTypes.Encryption)?.content['algorithm'])) {
return; return;
} }
var update = EventUpdate(roomID: room.id, type: type, content: event); var update =
if (event['type'] == EventTypes.Encrypted && encryptionEnabled) { EventUpdate(roomID: room.id, type: type, content: event.toJson());
if (event.type == EventTypes.Encrypted && encryptionEnabled) {
update = await update.decrypt(room); update = await update.decrypt(room);
} }
if (event['type'] == EventTypes.Message && if (event.type == EventTypes.Message &&
!room.isDirectChat && !room.isDirectChat &&
database != null && database != null &&
room.getState(EventTypes.RoomMember, event['sender']) == null) { event is MatrixEvent &&
room.getState(EventTypes.RoomMember, event.senderId) == null) {
// In order to correctly render room list previews we need to fetch the member from the database // In order to correctly render room list previews we need to fetch the member from the database
final user = await database?.getUser(event['sender'], room); final user = await database?.getUser(event.senderId, room);
if (user != null) { if (user != null) {
room.setState(user); room.setState(user);
} }