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; 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: