From da8ebe85ef15c994185980028241e8f8cdb4c0e1 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Fri, 28 Oct 2022 12:25:35 +0200 Subject: [PATCH 1/2] fix: Do not try to decrypt redacted events --- lib/encryption/encryption.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/encryption/encryption.dart b/lib/encryption/encryption.dart index 68b0e8a6..edc7c87a 100644 --- a/lib/encryption/encryption.dart +++ b/lib/encryption/encryption.dart @@ -189,6 +189,9 @@ class Encryption { } Event decryptRoomEventSync(String roomId, Event event) { + if (event.type != EventTypes.Encrypted || event.redacted) { + return event; + } final content = event.parsedRoomEncryptedContent; if (event.type != EventTypes.Encrypted || content.ciphertextMegolm == null) { @@ -294,7 +297,7 @@ class Encryption { Future decryptRoomEvent(String roomId, Event event, {bool store = false, EventUpdateType updateType = EventUpdateType.timeline}) async { - if (event.type != EventTypes.Encrypted) { + if (event.type != EventTypes.Encrypted || event.redacted) { return event; } final content = event.parsedRoomEncryptedContent; From 411cf3d4ecdd7149ae3beaf6ad546c9be7a50992 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Fri, 28 Oct 2022 12:30:27 +0200 Subject: [PATCH 2/2] fix: Redact originalSource on redaction --- lib/src/event.dart | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/src/event.dart b/lib/src/event.dart index d29baf72..a3835755 100644 --- a/lib/src/event.dart +++ b/lib/src/event.dart @@ -72,7 +72,8 @@ class Event extends MatrixEvent { ? room.unsafeGetUserFromMemoryOrFallback(stateKey!) : null; - final MatrixEvent? originalSource; + MatrixEvent? _originalSource; + MatrixEvent? get originalSource => _originalSource; Event({ this.status = defaultStatus, @@ -85,8 +86,9 @@ class Event extends MatrixEvent { Map? prevContent, String? stateKey, required this.room, - this.originalSource, - }) : super( + MatrixEvent? originalSource, + }) : _originalSource = originalSource, + super( content: content, type: type, eventId: eventId, @@ -262,6 +264,7 @@ class Event extends MatrixEvent { 'redacted_because': redactedBecause.toJson(), }; prevContent = null; + _originalSource = null; final contentKeyWhiteList = []; switch (type) { case EventTypes.RoomMember: