TimelineController {
let state = Arc::new(RwLock::new(TimelineState::new(
focus.clone(),
room_data_provider.own_user_id().to_owned(),
- room_data_provider.room_version(),
+ room_data_provider.room_version_rules(),
internal_id_prefix,
unable_to_decrypt_hook,
is_room_encrypted,
@@ -953,7 +953,7 @@ impl TimelineController {
txn_id.to_owned(),
new_event_id.to_owned(),
&mut txn.items,
- &txn.meta.room_version,
+ &txn.meta.room_version_rules,
) {
trace!("Aggregation marked as sent");
txn.commit();
@@ -1312,7 +1312,7 @@ impl TimelineController {
&mut tr.items,
&target,
aggregation,
- &tr.meta.room_version,
+ &tr.meta.room_version_rules,
);
tr.commit();
diff --git a/crates/matrix-sdk-ui/src/timeline/controller/state.rs b/crates/matrix-sdk-ui/src/timeline/controller/state.rs
index cbd505b8987..bf33154a2cb 100644
--- a/crates/matrix-sdk-ui/src/timeline/controller/state.rs
+++ b/crates/matrix-sdk-ui/src/timeline/controller/state.rs
@@ -19,8 +19,9 @@ use matrix_sdk::{deserialized_responses::TimelineEvent, send_queue::SendHandle};
#[cfg(test)]
use ruma::events::receipt::ReceiptEventContent;
use ruma::{
- MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedTransactionId, OwnedUserId, RoomVersionId,
+ MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedTransactionId, OwnedUserId,
events::{AnyMessageLikeEventContent, AnySyncEphemeralRoomEvent},
+ room_version_rules::RoomVersionRules,
serde::Raw,
};
use tracing::{instrument, trace, warn};
@@ -53,7 +54,7 @@ impl TimelineState {
pub(super) fn new(
focus: Arc>,
own_user_id: OwnedUserId,
- room_version: RoomVersionId,
+ room_version_rules: RoomVersionRules,
internal_id_prefix: Option,
unable_to_decrypt_hook: Option>,
is_room_encrypted: bool,
@@ -62,7 +63,7 @@ impl TimelineState {
items: ObservableItems::new(),
meta: TimelineMetadata::new(
own_user_id,
- room_version,
+ room_version_rules,
internal_id_prefix,
unable_to_decrypt_hook,
is_room_encrypted,
diff --git a/crates/matrix-sdk-ui/src/timeline/controller/state_transaction.rs b/crates/matrix-sdk-ui/src/timeline/controller/state_transaction.rs
index 6fdf22a128d..ab5fd5b2563 100644
--- a/crates/matrix-sdk-ui/src/timeline/controller/state_transaction.rs
+++ b/crates/matrix-sdk-ui/src/timeline/controller/state_transaction.rs
@@ -398,8 +398,9 @@ impl<'a, P: RoomDataProvider> TimelineStateTransaction<'a, P> {
thread_root: Option<&EventId>,
position: TimelineItemPosition,
) -> bool {
- let room_version = room_data_provider.room_version();
- if !(settings.event_filter)(event, &room_version) {
+ let rules = room_data_provider.room_version_rules();
+
+ if !(settings.event_filter)(event, &rules) {
// The user filtered out the event.
return false;
}
diff --git a/crates/matrix-sdk-ui/src/timeline/date_dividers.rs b/crates/matrix-sdk-ui/src/timeline/date_dividers.rs
index b774df677ce..9742799411c 100644
--- a/crates/matrix-sdk-ui/src/timeline/date_dividers.rs
+++ b/crates/matrix-sdk-ui/src/timeline/date_dividers.rs
@@ -657,7 +657,10 @@ enum DateDividerInsertError {
#[cfg(test)]
mod tests {
use assert_matches2::assert_let;
- use ruma::{MilliSecondsSinceUnixEpoch, owned_event_id, owned_user_id, uint};
+ use ruma::{
+ MilliSecondsSinceUnixEpoch, owned_event_id, owned_user_id,
+ room_version_rules::RoomVersionRules, uint,
+ };
use super::{super::controller::ObservableItems, DateDividerAdjuster};
use crate::timeline::{
@@ -691,7 +694,7 @@ mod tests {
}
fn test_metadata() -> TimelineMetadata {
- TimelineMetadata::new(owned_user_id!("@a:b.c"), ruma::RoomVersionId::V11, None, None, false)
+ TimelineMetadata::new(owned_user_id!("@a:b.c"), RoomVersionRules::V11, None, None, false)
}
#[test]
diff --git a/crates/matrix-sdk-ui/src/timeline/event_handler.rs b/crates/matrix-sdk-ui/src/timeline/event_handler.rs
index 6df1a8a115f..4873c51186e 100644
--- a/crates/matrix-sdk-ui/src/timeline/event_handler.rs
+++ b/crates/matrix-sdk-ui/src/timeline/event_handler.rs
@@ -26,7 +26,7 @@ use ruma::{
TransactionId,
events::{
AnyMessageLikeEventContent, AnySyncMessageLikeEvent, AnySyncStateEvent,
- AnySyncTimelineEvent, EventContent, FullStateEventContent, MessageLikeEventType,
+ AnySyncTimelineEvent, FullStateEventContent, MessageLikeEventContent, MessageLikeEventType,
StateEventType, SyncStateEvent,
poll::unstable_start::{
NewUnstablePollStartEventContentWithoutRelation, UnstablePollStartEventContent,
@@ -190,7 +190,7 @@ impl TimelineAction {
thread_root: Option,
thread_summary: Option,
) -> Option {
- let room_version = room_data_provider.room_version();
+ let redaction_rules = room_data_provider.room_version_rules().redaction;
let redacted_message_or_none = |event_type: MessageLikeEventType| {
(event_type != MessageLikeEventType::Reaction)
@@ -199,7 +199,7 @@ impl TimelineAction {
Some(match event {
AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomRedaction(ev)) => {
- if let Some(redacts) = ev.redacts(&room_version).map(ToOwned::to_owned) {
+ if let Some(redacts) = ev.redacts(&redaction_rules).map(ToOwned::to_owned) {
Self::HandleAggregation {
related_event: redacts,
kind: HandleAggregationKind::Redaction,
@@ -585,7 +585,7 @@ impl<'a, 'o> TimelineEventHandler<'a, 'o> {
self.items,
&target,
aggregation,
- &self.meta.room_version,
+ &self.meta.room_version_rules,
) {
// Update all events that replied to this message with the edited content.
Self::maybe_update_responses(self.meta, self.items, &edited_event_id, &new_item);
@@ -628,7 +628,7 @@ impl<'a, 'o> TimelineEventHandler<'a, 'o> {
self.items,
&target,
aggregation,
- &self.meta.room_version,
+ &self.meta.room_version_rules,
);
}
@@ -648,7 +648,7 @@ impl<'a, 'o> TimelineEventHandler<'a, 'o> {
self.items,
&target,
aggregation,
- &self.meta.room_version,
+ &self.meta.room_version_rules,
);
}
@@ -664,7 +664,7 @@ impl<'a, 'o> TimelineEventHandler<'a, 'o> {
self.items,
&target,
aggregation,
- &self.meta.room_version,
+ &self.meta.room_version_rules,
);
}
@@ -695,7 +695,7 @@ impl<'a, 'o> TimelineEventHandler<'a, 'o> {
self.items,
&target,
aggregation,
- &self.meta.room_version,
+ &self.meta.room_version_rules,
) {
// Look for any timeline event that's a reply to the redacted event, and redact
// the replied-to event there as well.
@@ -795,7 +795,7 @@ impl<'a, 'o> TimelineEventHandler<'a, 'o> {
&self.ctx.flow.timeline_item_id(),
&mut cowed,
self.items,
- &self.meta.room_version,
+ &self.meta.room_version_rules,
) {
warn!("discarding aggregations: {err}");
}
diff --git a/crates/matrix-sdk-ui/src/timeline/event_item/content/mod.rs b/crates/matrix-sdk-ui/src/timeline/event_item/content/mod.rs
index f67da00f27f..93e5a2f79bc 100644
--- a/crates/matrix-sdk-ui/src/timeline/event_item/content/mod.rs
+++ b/crates/matrix-sdk-ui/src/timeline/event_item/content/mod.rs
@@ -18,7 +18,7 @@ use as_variant::as_variant;
use matrix_sdk::crypto::types::events::UtdCause;
use matrix_sdk_base::latest_event::{PossibleLatestEvent, is_suitable_for_latest_event};
use ruma::{
- OwnedDeviceId, OwnedEventId, OwnedMxcUri, OwnedUserId, RoomVersionId, UserId,
+ OwnedDeviceId, OwnedEventId, OwnedMxcUri, OwnedUserId, UserId,
events::{
AnyFullStateEventContent, AnySyncTimelineEvent, FullStateEventContent, Mentions,
MessageLikeEventType, StateEventType,
@@ -55,6 +55,7 @@ use ruma::{
sticker::{StickerEventContent, SyncStickerEvent},
},
html::RemoveReplyFallback,
+ room_version_rules::RedactionRules,
};
use tracing::warn;
@@ -514,14 +515,14 @@ impl TimelineItemContent {
}
}
- pub(in crate::timeline) fn redact(&self, room_version: &RoomVersionId) -> Self {
+ pub(in crate::timeline) fn redact(&self, rules: &RedactionRules) -> Self {
match self {
Self::MsgLike(_) | Self::CallInvite | Self::CallNotify => {
TimelineItemContent::MsgLike(MsgLikeContent::redacted())
}
- Self::MembershipChange(ev) => Self::MembershipChange(ev.redact(room_version)),
+ Self::MembershipChange(ev) => Self::MembershipChange(ev.redact(rules)),
Self::ProfileChange(ev) => Self::ProfileChange(ev.redact()),
- Self::OtherState(ev) => Self::OtherState(ev.redact(room_version)),
+ Self::OtherState(ev) => Self::OtherState(ev.redact(rules)),
Self::FailedToParseMessageLike { .. } | Self::FailedToParseState { .. } => self.clone(),
}
}
@@ -723,10 +724,10 @@ impl RoomMembershipChange {
self.change
}
- fn redact(&self, room_version: &RoomVersionId) -> Self {
+ fn redact(&self, rules: &RedactionRules) -> Self {
Self {
user_id: self.user_id.clone(),
- content: FullStateEventContent::Redacted(self.content.clone().redact(room_version)),
+ content: FullStateEventContent::Redacted(self.content.clone().redact(rules)),
change: self.change,
}
}
@@ -957,67 +958,67 @@ impl AnyOtherFullStateEventContent {
}
}
- fn redact(&self, room_version: &RoomVersionId) -> Self {
+ fn redact(&self, rules: &RedactionRules) -> Self {
match self {
- Self::PolicyRuleRoom(c) => Self::PolicyRuleRoom(FullStateEventContent::Redacted(
- c.clone().redact(room_version),
- )),
- Self::PolicyRuleServer(c) => Self::PolicyRuleServer(FullStateEventContent::Redacted(
- c.clone().redact(room_version),
- )),
- Self::PolicyRuleUser(c) => Self::PolicyRuleUser(FullStateEventContent::Redacted(
- c.clone().redact(room_version),
- )),
+ Self::PolicyRuleRoom(c) => {
+ Self::PolicyRuleRoom(FullStateEventContent::Redacted(c.clone().redact(rules)))
+ }
+ Self::PolicyRuleServer(c) => {
+ Self::PolicyRuleServer(FullStateEventContent::Redacted(c.clone().redact(rules)))
+ }
+ Self::PolicyRuleUser(c) => {
+ Self::PolicyRuleUser(FullStateEventContent::Redacted(c.clone().redact(rules)))
+ }
Self::RoomAliases(c) => {
- Self::RoomAliases(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::RoomAliases(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
Self::RoomAvatar(c) => {
- Self::RoomAvatar(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::RoomAvatar(FullStateEventContent::Redacted(c.clone().redact(rules)))
+ }
+ Self::RoomCanonicalAlias(c) => {
+ Self::RoomCanonicalAlias(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
- Self::RoomCanonicalAlias(c) => Self::RoomCanonicalAlias(
- FullStateEventContent::Redacted(c.clone().redact(room_version)),
- ),
Self::RoomCreate(c) => {
- Self::RoomCreate(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::RoomCreate(FullStateEventContent::Redacted(c.clone().redact(rules)))
+ }
+ Self::RoomEncryption(c) => {
+ Self::RoomEncryption(FullStateEventContent::Redacted(c.clone().redact(rules)))
+ }
+ Self::RoomGuestAccess(c) => {
+ Self::RoomGuestAccess(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
- Self::RoomEncryption(c) => Self::RoomEncryption(FullStateEventContent::Redacted(
- c.clone().redact(room_version),
- )),
- Self::RoomGuestAccess(c) => Self::RoomGuestAccess(FullStateEventContent::Redacted(
- c.clone().redact(room_version),
- )),
Self::RoomHistoryVisibility(c) => Self::RoomHistoryVisibility(
- FullStateEventContent::Redacted(c.clone().redact(room_version)),
+ FullStateEventContent::Redacted(c.clone().redact(rules)),
),
Self::RoomJoinRules(c) => {
- Self::RoomJoinRules(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::RoomJoinRules(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
Self::RoomName(c) => {
- Self::RoomName(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::RoomName(FullStateEventContent::Redacted(c.clone().redact(rules)))
+ }
+ Self::RoomPinnedEvents(c) => {
+ Self::RoomPinnedEvents(FullStateEventContent::Redacted(c.clone().redact(rules)))
+ }
+ Self::RoomPowerLevels(c) => {
+ Self::RoomPowerLevels(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
- Self::RoomPinnedEvents(c) => Self::RoomPinnedEvents(FullStateEventContent::Redacted(
- c.clone().redact(room_version),
- )),
- Self::RoomPowerLevels(c) => Self::RoomPowerLevels(FullStateEventContent::Redacted(
- c.clone().redact(room_version),
- )),
Self::RoomServerAcl(c) => {
- Self::RoomServerAcl(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::RoomServerAcl(FullStateEventContent::Redacted(c.clone().redact(rules)))
+ }
+ Self::RoomThirdPartyInvite(c) => {
+ Self::RoomThirdPartyInvite(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
- Self::RoomThirdPartyInvite(c) => Self::RoomThirdPartyInvite(
- FullStateEventContent::Redacted(c.clone().redact(room_version)),
- ),
Self::RoomTombstone(c) => {
- Self::RoomTombstone(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::RoomTombstone(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
Self::RoomTopic(c) => {
- Self::RoomTopic(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::RoomTopic(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
Self::SpaceChild(c) => {
- Self::SpaceChild(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::SpaceChild(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
Self::SpaceParent(c) => {
- Self::SpaceParent(FullStateEventContent::Redacted(c.clone().redact(room_version)))
+ Self::SpaceParent(FullStateEventContent::Redacted(c.clone().redact(rules)))
}
Self::_Custom { event_type } => Self::_Custom { event_type: event_type.clone() },
}
@@ -1042,8 +1043,8 @@ impl OtherState {
&self.content
}
- fn redact(&self, room_version: &RoomVersionId) -> Self {
- Self { state_key: self.state_key.clone(), content: self.content.redact(room_version) }
+ fn redact(&self, rules: &RedactionRules) -> Self {
+ Self { state_key: self.state_key.clone(), content: self.content.redact(rules) }
}
}
@@ -1052,11 +1053,12 @@ mod tests {
use assert_matches2::assert_let;
use matrix_sdk_test::ALICE;
use ruma::{
- RoomVersionId, assign,
+ assign,
events::{
FullStateEventContent,
room::member::{MembershipState, RoomMemberEventContent},
},
+ room_version_rules::RedactionRules,
};
use super::{MembershipChange, RoomMembershipChange, TimelineItemContent};
@@ -1074,7 +1076,7 @@ mod tests {
change: Some(MembershipChange::Banned),
});
- let redacted = content.redact(&RoomVersionId::V11);
+ let redacted = content.redact(&RedactionRules::V11);
assert_let!(TimelineItemContent::MembershipChange(inner) = redacted);
assert_eq!(inner.change, Some(MembershipChange::Banned));
assert_let!(FullStateEventContent::Redacted(inner_content_redacted) = inner.content);
diff --git a/crates/matrix-sdk-ui/src/timeline/event_item/mod.rs b/crates/matrix-sdk-ui/src/timeline/event_item/mod.rs
index 3cc67841974..4c08b8a6e62 100644
--- a/crates/matrix-sdk-ui/src/timeline/event_item/mod.rs
+++ b/crates/matrix-sdk-ui/src/timeline/event_item/mod.rs
@@ -31,8 +31,9 @@ use matrix_sdk_base::{
use once_cell::sync::Lazy;
use ruma::{
EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedMxcUri, OwnedTransactionId,
- OwnedUserId, RoomId, RoomVersionId, TransactionId, UserId,
+ OwnedUserId, RoomId, TransactionId, UserId,
events::{AnySyncTimelineEvent, receipt::Receipt, room::message::MessageType},
+ room_version_rules::RedactionRules,
serde::Raw,
};
use tracing::warn;
@@ -534,8 +535,8 @@ impl EventTimelineItem {
}
/// Create a clone of the current item, with content that's been redacted.
- pub(super) fn redact(&self, room_version: &RoomVersionId) -> Self {
- let content = self.content.redact(room_version);
+ pub(super) fn redact(&self, rules: &RedactionRules) -> Self {
+ let content = self.content.redact(rules);
let kind = match &self.kind {
EventTimelineItemKind::Local(l) => EventTimelineItemKind::Local(l.clone()),
EventTimelineItemKind::Remote(r) => EventTimelineItemKind::Remote(r.redact()),
diff --git a/crates/matrix-sdk-ui/src/timeline/mod.rs b/crates/matrix-sdk-ui/src/timeline/mod.rs
index beb28f6a5c7..ec7d3a008e6 100644
--- a/crates/matrix-sdk-ui/src/timeline/mod.rs
+++ b/crates/matrix-sdk-ui/src/timeline/mod.rs
@@ -39,7 +39,7 @@ use matrix_sdk::{
use mime::Mime;
use pinned_events_loader::PinnedEventsRoom;
use ruma::{
- EventId, OwnedEventId, RoomVersionId, UserId,
+ EventId, OwnedEventId, UserId,
api::client::receipt::create_receipt::v3::ReceiptType,
events::{
AnyMessageLikeEventContent, AnySyncTimelineEvent,
@@ -50,6 +50,7 @@ use ruma::{
pinned_events::RoomPinnedEventsEventContent,
},
},
+ room_version_rules::RoomVersionRules,
};
#[cfg(feature = "unstable-msc4274")]
use ruma::{
@@ -799,9 +800,9 @@ impl Drop for TimelineDropHandle {
#[cfg(not(target_family = "wasm"))]
pub type TimelineEventFilterFn =
- dyn Fn(&AnySyncTimelineEvent, &RoomVersionId) -> bool + Send + Sync;
+ dyn Fn(&AnySyncTimelineEvent, &RoomVersionRules) -> bool + Send + Sync;
#[cfg(target_family = "wasm")]
-pub type TimelineEventFilterFn = dyn Fn(&AnySyncTimelineEvent, &RoomVersionId) -> bool;
+pub type TimelineEventFilterFn = dyn Fn(&AnySyncTimelineEvent, &RoomVersionRules) -> bool;
/// A source for sending an attachment.
///
diff --git a/crates/matrix-sdk-ui/src/timeline/tests/mod.rs b/crates/matrix-sdk-ui/src/timeline/tests/mod.rs
index 683f7c14199..4998bd74f20 100644
--- a/crates/matrix-sdk-ui/src/timeline/tests/mod.rs
+++ b/crates/matrix-sdk-ui/src/timeline/tests/mod.rs
@@ -41,7 +41,7 @@ use matrix_sdk_base::{
use matrix_sdk_test::{ALICE, DEFAULT_TEST_ROOM_ID, event_factory::EventFactory};
use ruma::{
EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedTransactionId,
- OwnedUserId, RoomVersionId, TransactionId, UInt, UserId,
+ OwnedUserId, TransactionId, UInt, UserId, assign,
events::{
AnyMessageLikeEventContent, AnyTimelineEvent,
reaction::ReactionEventContent,
@@ -52,6 +52,7 @@ use ruma::{
power_levels::NotificationPowerLevels,
push::{PushConditionPowerLevelsCtx, PushConditionRoomCtx, Ruleset},
room_id,
+ room_version_rules::RoomVersionRules,
serde::Raw,
uint,
};
@@ -349,8 +350,8 @@ impl RoomDataProvider for TestRoomDataProvider {
&ALICE
}
- fn room_version(&self) -> RoomVersionId {
- RoomVersionId::V10
+ fn room_version_rules(&self) -> RoomVersionRules {
+ RoomVersionRules::V10
}
async fn crypto_context_info(&self) -> CryptoContextInfo {
@@ -406,18 +407,20 @@ impl RoomDataProvider for TestRoomDataProvider {
async fn push_context(&self) -> Option {
let push_rules = Ruleset::server_default(&ALICE);
- let power_levels = PushConditionPowerLevelsCtx {
- users: BTreeMap::new(),
- users_default: int!(0),
- notifications: NotificationPowerLevels::new(),
- };
- let push_condition_room_ctx = PushConditionRoomCtx {
- room_id: room_id!("!my_room:server.name").to_owned(),
- member_count: uint!(2),
- user_id: ALICE.to_owned(),
- user_display_name: "Alice".to_owned(),
- power_levels: Some(power_levels),
- };
+ let power_levels = PushConditionPowerLevelsCtx::new(
+ BTreeMap::new(),
+ int!(0),
+ NotificationPowerLevels::new(),
+ );
+ let push_condition_room_ctx = assign!(
+ PushConditionRoomCtx::new(
+ room_id!("!my_room:server.name").to_owned(),
+ uint!(2),
+ ALICE.to_owned(),
+ "Alice".to_owned(),
+ ),
+ { power_levels: Some(power_levels) }
+ );
Some(PushContext::new(push_condition_room_ctx, push_rules))
}
diff --git a/crates/matrix-sdk-ui/src/timeline/tests/read_receipts.rs b/crates/matrix-sdk-ui/src/timeline/tests/read_receipts.rs
index 3f135d25e72..1ccced229a4 100644
--- a/crates/matrix-sdk-ui/src/timeline/tests/read_receipts.rs
+++ b/crates/matrix-sdk-ui/src/timeline/tests/read_receipts.rs
@@ -18,13 +18,15 @@ use eyeball_im::VectorDiff;
use matrix_sdk::assert_next_matches_with_timeout;
use matrix_sdk_test::{ALICE, BOB, CAROL, async_test, event_factory::EventFactory};
use ruma::{
- RoomVersionId, event_id,
+ event_id,
events::{
AnySyncMessageLikeEvent, AnySyncTimelineEvent,
receipt::{Receipt, ReceiptThread, ReceiptType},
room::message::{MessageType, RoomMessageEventContent, SyncRoomMessageEvent},
},
- owned_event_id, room_id, uint,
+ owned_event_id, room_id,
+ room_version_rules::RoomVersionRules,
+ uint,
};
use stream_assert::{assert_next_matches, assert_pending};
@@ -34,7 +36,7 @@ use crate::timeline::{
tests::TestTimelineBuilder,
};
-fn filter_notice(ev: &AnySyncTimelineEvent, _room_version: &RoomVersionId) -> bool {
+fn filter_notice(ev: &AnySyncTimelineEvent, _rules: &RoomVersionRules) -> bool {
match ev {
AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage(
SyncRoomMessageEvent::Original(msg),
@@ -378,7 +380,6 @@ async fn test_read_receipts_updates_on_message_decryption() {
use assert_matches2::assert_let;
use matrix_sdk_base::crypto::{OlmMachine, decrypt_room_key_export};
use ruma::{
- RoomVersionId,
events::room::encrypted::{
EncryptedEventScheme, MegolmV1AesSha2ContentInit, RoomEncryptedEventContent,
},
@@ -387,7 +388,7 @@ async fn test_read_receipts_updates_on_message_decryption() {
use crate::timeline::{EncryptedMessage, TimelineItemContent};
- fn filter_text_msg(ev: &AnySyncTimelineEvent, _room_version_id: &RoomVersionId) -> bool {
+ fn filter_text_msg(ev: &AnySyncTimelineEvent, _rules: &RoomVersionRules) -> bool {
match ev {
AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage(
SyncRoomMessageEvent::Original(msg),
diff --git a/crates/matrix-sdk-ui/src/timeline/traits.rs b/crates/matrix-sdk-ui/src/timeline/traits.rs
index aa735f5f331..e1e376488a2 100644
--- a/crates/matrix-sdk-ui/src/timeline/traits.rs
+++ b/crates/matrix-sdk-ui/src/timeline/traits.rs
@@ -27,12 +27,13 @@ use matrix_sdk::{
};
use matrix_sdk_base::{RoomInfo, latest_event::LatestEvent};
use ruma::{
- EventId, OwnedEventId, OwnedTransactionId, OwnedUserId, RoomVersionId, UserId,
+ EventId, OwnedEventId, OwnedTransactionId, OwnedUserId, UserId,
events::{
AnyMessageLikeEventContent, AnySyncTimelineEvent,
fully_read::FullyReadEventContent,
receipt::{Receipt, ReceiptThread, ReceiptType},
},
+ room_version_rules::RoomVersionRules,
serde::Raw,
};
use tracing::error;
@@ -90,7 +91,7 @@ pub(super) trait RoomDataProvider:
Clone + PaginableRoom + PaginableThread + PinnedEventsRoom + 'static
{
fn own_user_id(&self) -> &UserId;
- fn room_version(&self) -> RoomVersionId;
+ fn room_version_rules(&self) -> RoomVersionRules;
fn crypto_context_info(&self)
-> impl Future