diff --git a/lib/src/client.dart b/lib/src/client.dart index 429fb083..a5df3035 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -1088,11 +1088,13 @@ class Client extends MatrixApi { final encryption = this.encryption; if (event.type == EventTypes.Encrypted && encryption != null) { - event = await encryption.decryptRoomEvent(roomId, event); - if (event.type == EventTypes.Encrypted && _currentSync != null) { - await _currentSync; - event = await encryption.decryptRoomEvent(roomId, event); + var decrypted = await encryption.decryptRoomEvent(roomId, event); + if (decrypted.messageType == MessageTypes.BadEncrypted && + prevBatch != null) { + await oneShotSync(); + decrypted = await encryption.decryptRoomEvent(roomId, event); } + event = decrypted; } if (storeInDatabase) {