From 5081802177e6fee5565772d1bf628c1dd7efda66 Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Tue, 5 Dec 2023 15:35:41 +0100 Subject: [PATCH] room: try restoring from a key backup during backpagination too --- crates/matrix-sdk/src/room/mod.rs | 34 +++++++------------ crates/matrix-sdk/tests/integration/client.rs | 2 +- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/crates/matrix-sdk/src/room/mod.rs b/crates/matrix-sdk/src/room/mod.rs index 75ce09117..b63f3d3e1 100644 --- a/crates/matrix-sdk/src/room/mod.rs +++ b/crates/matrix-sdk/src/room/mod.rs @@ -262,30 +262,20 @@ impl Room { }; #[cfg(feature = "e2e-encryption")] - { - let machine = self.client.olm_machine().await; - if let Some(machine) = machine.as_ref() { - for event in http_response.chunk { - let decrypted_event = if let Ok(AnySyncTimelineEvent::MessageLike( - AnySyncMessageLikeEvent::RoomEncrypted(SyncMessageLikeEvent::Original(_)), - )) = event.deserialize_as::() - { - if let Ok(event) = - machine.decrypt_room_event(event.cast_ref(), room_id).await - { - event - } else { - TimelineEvent::new(event) - } - } else { - TimelineEvent::new(event) - }; - - response.chunk.push(decrypted_event); + for event in http_response.chunk { + let decrypted_event = if let Ok(AnySyncTimelineEvent::MessageLike( + AnySyncMessageLikeEvent::RoomEncrypted(SyncMessageLikeEvent::Original(_)), + )) = event.deserialize_as::() + { + if let Ok(event) = self.decrypt_event(event.cast_ref()).await { + event + } else { + TimelineEvent::new(event) } } else { - response.chunk.extend(http_response.chunk.into_iter().map(TimelineEvent::new)); - } + TimelineEvent::new(event) + }; + response.chunk.push(decrypted_event); } if let Some(push_context) = self.push_context().await? { diff --git a/crates/matrix-sdk/tests/integration/client.rs b/crates/matrix-sdk/tests/integration/client.rs index af41da9ac..6b527c381 100644 --- a/crates/matrix-sdk/tests/integration/client.rs +++ b/crates/matrix-sdk/tests/integration/client.rs @@ -586,7 +586,7 @@ async fn cross_signing_status() { #[cfg(feature = "e2e-encryption")] #[async_test] -async fn encrypt_room_event() { +async fn test_encrypt_room_event() { use std::sync::Arc; use ruma::events::room::encrypted::RoomEncryptedEventContent;