room: try restoring from a key backup during backpagination too

This commit is contained in:
Benjamin Bouvier
2023-12-05 15:35:41 +01:00
parent 736188811f
commit 5081802177
2 changed files with 13 additions and 23 deletions
+12 -22
View File
@@ -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::<AnySyncTimelineEvent>()
{
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::<AnySyncTimelineEvent>()
{
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? {
@@ -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;