Skip to content

Commit b8b2cf0

Browse files
committed
sdk-ui: use /event (again) for loading pinned events since it's faster than /context and its responses do contain the sender info we thought was missing
1 parent 76af169 commit b8b2cf0

File tree

3 files changed

+11
-29
lines changed

3 files changed

+11
-29
lines changed

benchmarks/benches/room_bench.rs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ pub fn load_pinned_events_benchmark(c: &mut Criterion) {
153153

154154
runtime.block_on(
155155
Mock::given(method("GET"))
156-
.and(path_regex(r"/_matrix/client/r0/rooms/.*/context/.*"))
156+
.and(path_regex(r"/_matrix/client/r0/rooms/.*/event/.*"))
157157
.respond_with(move |r: &Request| {
158158
let segments: Vec<&str> = r.url.path_segments().expect("Invalid path").collect();
159159
let event_id_str = segments[6];
@@ -163,14 +163,9 @@ pub fn load_pinned_events_benchmark(c: &mut Criterion) {
163163
.event_id(&event_id)
164164
.server_ts(MilliSecondsSinceUnixEpoch::now())
165165
.into_raw_sync();
166-
ResponseTemplate::new(200).set_delay(Duration::from_millis(50)).set_body_json(
167-
json!({
168-
"events_before": [],
169-
"event": event.json(),
170-
"events_after": [],
171-
"state": [],
172-
}),
173-
)
166+
ResponseTemplate::new(200)
167+
.set_delay(Duration::from_millis(50))
168+
.set_body_json(event.json())
174169
})
175170
.mount(&server),
176171
);

crates/matrix-sdk-ui/src/timeline/pinned_events_loader.rs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,15 @@ use std::{fmt::Formatter, sync::Arc};
1616

1717
use futures_util::{stream, StreamExt};
1818
use matrix_sdk::{
19-
config::RequestConfig, event_cache::paginator::PaginatorError, Error, Room, SendOutsideWasm,
19+
config::RequestConfig, event_cache::paginator::PaginatorError, Room, SendOutsideWasm,
2020
SyncOutsideWasm,
2121
};
2222
use matrix_sdk_base::deserialized_responses::SyncTimelineEvent;
23-
use ruma::{uint, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId};
23+
use ruma::{EventId, MilliSecondsSinceUnixEpoch, OwnedEventId};
2424
use thiserror::Error;
2525
use tracing::{debug, warn};
2626

27-
use crate::timeline::{
28-
event_handler::TimelineEventKind, pinned_events_loader::PinnedEventsLoaderError::EventNotFound,
29-
};
27+
use crate::timeline::event_handler::TimelineEventKind;
3028

3129
const MAX_CONCURRENT_REQUESTS: usize = 10;
3230

@@ -164,15 +162,9 @@ impl PinnedEventsRoom for Room {
164162
}
165163

166164
debug!("Loading pinned event {event_id} from HS");
167-
self.event_with_context(event_id, true, uint!(0), request_config)
165+
self.event(event_id, request_config)
168166
.await
169-
.and_then(|e| {
170-
if let Some(ev) = e.event {
171-
Ok((ev.into(), Vec::new()))
172-
} else {
173-
Err(Error::UnknownError(Box::new(EventNotFound(event_id.to_owned()))))
174-
}
175-
})
167+
.map(|e| (e.into(), Vec::new()))
176168
.map_err(|err| PaginatorError::SdkError(Box::new(err)))
177169
}
178170

crates/matrix-sdk-ui/tests/integration/timeline/pinned_event.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use serde_json::json;
2020
use stream_assert::assert_pending;
2121
use wiremock::MockServer;
2222

23-
use crate::{mock_context, mock_sync};
23+
use crate::{mock_event, mock_sync};
2424

2525
#[async_test]
2626
async fn test_new_pinned_events_are_added_on_sync() {
@@ -666,16 +666,11 @@ impl TestHelper {
666666
let mut joined_room_builder = JoinedRoomBuilder::new(&self.room_id);
667667
for (timeline_event, add_to_timeline) in text_messages {
668668
let deserialized_event = timeline_event.event.deserialize()?;
669-
mock_context(
669+
mock_event(
670670
&self.server,
671671
&self.room_id,
672672
deserialized_event.event_id(),
673-
None,
674-
Vec::new(),
675673
timeline_event.clone(),
676-
Vec::new(),
677-
None,
678-
Vec::new(),
679674
)
680675
.await;
681676

0 commit comments

Comments
 (0)