Skip to content

Commit d5ee644

Browse files
committed
refactor(base): Reorganize the state_events processors.
This patch tries to clarify the processors in `state_events` by putting them in two modules: `sync` and `stripped`, along with a bit of renaming: - `collect_sync` becomes `sync::collect`, - `collect_sync_from_timeline` becomes `sync::collect_from_timeline`, - `collect_stripped` becomes `stripped::collect`. I believe this is an improvement.
1 parent 06022aa commit d5ee644

File tree

3 files changed

+51
-38
lines changed

3 files changed

+51
-38
lines changed

crates/matrix-sdk-base/src/client.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,7 @@ impl BaseClient {
614614
room_info.handle_encryption_state(requested_required_states.for_room(&room_id));
615615

616616
let (raw_state_events, state_events) =
617-
processors::state_events::collect_sync(&mut context, &new_info.state.events);
617+
processors::state_events::sync::collect(&mut context, &new_info.state.events);
618618

619619
let mut new_user_ids = processors::state_events::dispatch_and_get_new_users(
620620
&mut context,
@@ -646,7 +646,7 @@ impl BaseClient {
646646
}
647647

648648
let (raw_state_events_from_timeline, state_events_from_timeline) =
649-
processors::state_events::collect_sync_from_timeline(
649+
processors::state_events::sync::collect_from_timeline(
650650
&mut context,
651651
&new_info.timeline.events,
652652
);
@@ -743,7 +743,7 @@ impl BaseClient {
743743
room_info.handle_encryption_state(requested_required_states.for_room(&room_id));
744744

745745
let (raw_state_events, state_events) =
746-
processors::state_events::collect_sync(&mut context, &new_info.state.events);
746+
processors::state_events::sync::collect(&mut context, &new_info.state.events);
747747

748748
let mut new_user_ids = processors::state_events::dispatch_and_get_new_users(
749749
&mut context,
@@ -754,7 +754,7 @@ impl BaseClient {
754754
.await?;
755755

756756
let (raw_state_events_from_timeline, state_events_from_timeline) =
757-
processors::state_events::collect_sync_from_timeline(
757+
processors::state_events::sync::collect_from_timeline(
758758
&mut context,
759759
&new_info.timeline.events,
760760
);
@@ -818,7 +818,7 @@ impl BaseClient {
818818
self.room_info_notable_update_sender.clone(),
819819
);
820820

821-
let invite_state = processors::state_events::collect_stripped(
821+
let invite_state = processors::state_events::stripped::collect(
822822
&mut context,
823823
&new_info.invite_state.events,
824824
);
@@ -849,7 +849,7 @@ impl BaseClient {
849849
self.room_info_notable_update_sender.clone(),
850850
);
851851

852-
let knock_state = processors::state_events::collect_stripped(
852+
let knock_state = processors::state_events::stripped::collect(
853853
&mut context,
854854
&new_info.knock_state.events,
855855
);

crates/matrix-sdk-base/src/response_processors/state_events.rs

Lines changed: 43 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ use std::{
1818
};
1919

2020
use ruma::{
21-
events::{
22-
room::member::MembershipState, AnyStrippedStateEvent, AnySyncStateEvent,
23-
AnySyncTimelineEvent,
24-
},
21+
events::{room::member::MembershipState, AnySyncStateEvent},
2522
serde::Raw,
2623
OwnedUserId,
2724
};
@@ -34,35 +31,51 @@ use crate::{
3431
RoomInfo,
3532
};
3633

37-
/// Collect sync state events and map them with their deserialized form.
38-
pub fn collect_sync(
39-
_context: &mut Context,
40-
raw_events: &[Raw<AnySyncStateEvent>],
41-
) -> (Vec<Raw<AnySyncStateEvent>>, Vec<AnySyncStateEvent>) {
42-
collect(raw_events)
43-
}
34+
/// Collect [`AnySyncStateEvent`].
35+
pub mod sync {
36+
use ruma::events::AnySyncTimelineEvent;
37+
38+
use super::{AnySyncStateEvent, Context, Raw};
4439

45-
/// Collect stripped state events and map them with their deserialized form.
46-
pub fn collect_stripped(
47-
_context: &mut Context,
48-
raw_events: &[Raw<AnyStrippedStateEvent>],
49-
) -> (Vec<Raw<AnyStrippedStateEvent>>, Vec<AnyStrippedStateEvent>) {
50-
collect(raw_events)
40+
/// Collect [`AnySyncStateEvent`] to [`AnySyncStateEvent`].
41+
pub fn collect(
42+
_context: &mut Context,
43+
raw_events: &[Raw<AnySyncStateEvent>],
44+
) -> (Vec<Raw<AnySyncStateEvent>>, Vec<AnySyncStateEvent>) {
45+
super::collect(raw_events)
46+
}
47+
48+
/// Collect [`AnySyncTimelineEvent`] to [`AnySyncStateEvent`].
49+
///
50+
/// A [`AnySyncTimelineEvent`] can represent either message-like events or
51+
/// state events. The message-like events are filtered out.
52+
pub fn collect_from_timeline(
53+
_context: &mut Context,
54+
raw_events: &[Raw<AnySyncTimelineEvent>],
55+
) -> (Vec<Raw<AnySyncStateEvent>>, Vec<AnySyncStateEvent>) {
56+
super::collect(raw_events.iter().filter_map(|raw_event| {
57+
// Only state events have a `state_key` field.
58+
match raw_event.get_field::<&str>("state_key") {
59+
Ok(Some(_)) => Some(raw_event.cast_ref()),
60+
_ => None,
61+
}
62+
}))
63+
}
5164
}
5265

53-
/// Collect sync timeline event, filter the sync state events, and map them with
54-
/// their deserialized form.
55-
pub fn collect_sync_from_timeline(
56-
_context: &mut Context,
57-
raw_events: &[Raw<AnySyncTimelineEvent>],
58-
) -> (Vec<Raw<AnySyncStateEvent>>, Vec<AnySyncStateEvent>) {
59-
collect(raw_events.iter().filter_map(|raw_event| {
60-
// State events have a `state_key` field.
61-
match raw_event.get_field::<&str>("state_key") {
62-
Ok(Some(_)) => Some(raw_event.cast_ref()),
63-
_ => None,
64-
}
65-
}))
66+
/// Collect [`AnyStrippedStateEvent`].
67+
pub mod stripped {
68+
use ruma::events::AnyStrippedStateEvent;
69+
70+
use super::{Context, Raw};
71+
72+
/// Collect [`AnyStrippedStateEvent`] to [`AnyStrippedStateEvent`].
73+
pub fn collect(
74+
_context: &mut Context,
75+
raw_events: &[Raw<AnyStrippedStateEvent>],
76+
) -> (Vec<Raw<AnyStrippedStateEvent>>, Vec<AnyStrippedStateEvent>) {
77+
super::collect(raw_events)
78+
}
6679
}
6780

6881
fn collect<'a, I, T>(raw_events: I) -> (Vec<Raw<T>>, Vec<T>)

crates/matrix-sdk-base/src/sliding_sync.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,15 +369,15 @@ impl BaseClient {
369369
// incomplete or staled already. We must only read state events from
370370
// `required_state`.
371371
let (raw_state_events, state_events) =
372-
processors::state_events::collect_sync(context, &room_data.required_state);
372+
processors::state_events::sync::collect(context, &room_data.required_state);
373373

374374
// Find or create the room in the store
375375
let is_new_room = !state_store.room_exists(room_id);
376376

377377
let invite_state_events = room_data
378378
.invite_state
379379
.as_ref()
380-
.map(|events| processors::state_events::collect_stripped(context, events));
380+
.map(|events| processors::state_events::stripped::collect(context, events));
381381

382382
#[allow(unused_mut)] // Required for some feature flag combinations
383383
let (mut room, mut room_info, invited_room, knocked_room) = self

0 commit comments

Comments
 (0)