From 632ecbed7ee1d497e2165c2cf6c8953439fde888 Mon Sep 17 00:00:00 2001 From: Krille Date: Tue, 31 Dec 2024 12:51:02 +0100 Subject: [PATCH] chore: Follow up store unable to decrypt information correctly --- lib/src/client.dart | 6 ++---- lib/src/event.dart | 33 ++++++++++++++++++++------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/lib/src/client.dart b/lib/src/client.dart index 5677b7ff..6ec906e7 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -2755,14 +2755,12 @@ class Client extends MatrixApi { if (event is MatrixEvent && event.type == EventTypes.Encrypted && encryptionEnabled) { - final decrypted = await encryption!.decryptRoomEvent( + event = await encryption!.decryptRoomEvent( Event.fromMatrixEvent(event, room), updateType: type, ); - if (decrypted.type != EventTypes.Encrypted) { - event = decrypted; - } else { + if (event.type == EventTypes.Encrypted) { // if the event failed to decrypt, add it to the queue _eventsPendingDecryption.add( _EventPendingDecryption(Event.fromMatrixEvent(event, room)), diff --git a/lib/src/event.dart b/lib/src/event.dart index 3446eed0..ddbde58f 100644 --- a/lib/src/event.dart +++ b/lib/src/event.dart @@ -163,20 +163,27 @@ class Event extends MatrixEvent { factory Event.fromMatrixEvent( MatrixEvent matrixEvent, Room room, { - EventStatus status = defaultStatus, + EventStatus? status, }) => - Event( - status: status, - content: matrixEvent.content, - type: matrixEvent.type, - eventId: matrixEvent.eventId, - senderId: matrixEvent.senderId, - originServerTs: matrixEvent.originServerTs, - unsigned: matrixEvent.unsigned, - prevContent: matrixEvent.prevContent, - stateKey: matrixEvent.stateKey, - room: room, - ); + matrixEvent is Event + ? matrixEvent + : Event( + status: status ?? + eventStatusFromInt( + matrixEvent.unsigned + ?.tryGet('messageSendingStatusKey') ?? + defaultStatus.intValue, + ), + content: matrixEvent.content, + type: matrixEvent.type, + eventId: matrixEvent.eventId, + senderId: matrixEvent.senderId, + originServerTs: matrixEvent.originServerTs, + unsigned: matrixEvent.unsigned, + prevContent: matrixEvent.prevContent, + stateKey: matrixEvent.stateKey, + room: room, + ); /// Get a State event from a table row or from the event stream. factory Event.fromJson(